2010-04-26 103 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