2010-04-26 101 views
4

我有一個跨域cookie問題。我閱讀了許多有關在子域之間共享Cookie的文檔。所有文章的主要思想是將Domain屬性設置爲「.mydomain.com」。我在本地IIS服務器上創建了兩個域 - test1.local.bootest2.local.boo。瀏覽器可以很好地顯示它們。我有以下代碼:跨域Cookie問題(ASP.NET)

網站測試1 - 寫餅乾:

HttpCookie myCookie = new HttpCookie("TestCookie"); 
myCookie.Domain = ".local.boo"; 
myCookie["msg"] = "Welcome from Cookie"; 
Response.Cookies.Add(myCookie); 

網站測試2 - 讀取cookie的:

HttpCookie cookie = Request.Cookies["TestCookie"]; 
if (cookie != null) 
{ 
    Response.Write(cookie["msg"]); 
} 
else 
{ 
    Response.Write("FAILED"); 
} 

該代碼總是顯示失敗的消息。所以這意味着第二個站點無法從同一個子域讀取cookie。我的錯誤在哪裏?

回答

0

嘗試設置expires屬性或其在usersession結束時被刪除的可能性。

1

您可以使用網絡調試器(如fiddler)檢查瀏覽器是否返回cookie標頭。

它會向您顯示爲每個請求和響應發送的標頭和Cookie,以便您可以查看是否設置了正確的域以及對第二個域的請求會發生什麼。

0

嘗試在未來的到期日期設置爲某個時候:

cookie.Expires = DateTime.Now.AddYears(5); 
1

嗯......這個問題在瀏覽器... Opera瀏覽器不發送的cookie到其他網站上相同的子域。 Firefox和IE的效果很好。無論如何,謝謝你們!

一些注意事項:如果你想從其他子域中刪除這樣的cookie,那麼你需要設置一個域屬性如下:.mydomain.com - 我花了很多時間試圖弄清楚。希望它可以幫助某人

1

在IIS 7

添加到您的web.config

<system.webserver> 
    <httpProtocol> 
     <customHeaders> 
      <add name="p3p" value="CP=&quot;NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM&quot;" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 

在II6。

  • 運行inetmgr
  • 展開[服務器]>網站
  • [您的網站]右CLIC
  • 屬性
  • HTTP頭
  • 添加...
  • 自定義頭名稱:P3P
  • 自定義標頭值:CP = 「NOI ADM DEV PSAI COM NAV我們OTR STP IND DEM」
  • OK
  • OK
+1

做都坐必須有這些,這些選項在哪裏記錄? – Tracker1 2011-11-11 23:32:20