跨域COOKIE问题

X-i-n 2015-06-17 02:52:53
有这样的情形:
访客在访问 www.a.com 的时候,会发送一个页面访问记录到 a.com/log.aspx ,包含 $.cookie("id")和当前url两个值;
如果在发送前发现不存在这个cookie,会用一个十位的随机数作为值,创建一个对应的 a.com 的cookie,然后再发送这个值和当前url到 a.com/log.aspx

现在新增了合作网站 b.com和c.com,需要在访问 b.com/b.html和c.com/c.html的时候,向 a.com/guestlog.aspx 发送 a.com的$.cookie("id")和当前url,用jsonp实现后,可以成功发送并解析返回值(为了获取a.com的cookie值,专门写了一个 a.com/cookie.aspx 页面,在b.com和c.com的页面里用jquery的getScript来获取)。
(cookie.aspx逻辑:判断IsNothing(Request.Cookies("id")),如果为true,直接返回值,如果为false,先生成,后返回值。)

测试了chrome,firefox,一切正常,但是IE11每次都会返回一个新的值(这个属于异常情况,正常情况应该在没有该cookie的时候生成,有这个cookie的话,值保持不变)
而如果直接访问 a.com的网站,可以查看到"id" 这个COOKIE的值一直都有,并且不变。(这个属于正常情形)
(照此判断,在cookie.aspx的判断里,Request.cookies("id") 一直是nothing)
请问这是什么原因造成的呢?

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Randomize()
Dim CIK As String
If IsNothing(Request.Cookies("id")) Then
With Response.Cookies("id")
.Value = New Random(Second(Now)).Next(10000, 99999) & (New Random(Second(Now)).Next(1, 99999) + 100000).ToString.Substring(1)
.Expires = Now.AddYears(50)
.Domain = ".a.com"
.Path = "/"
CIK = "uks='N" & .Value & "';"
End With
Else
CIK = "uks='" & Request.Cookies("id").Value & "';"
End If
Response.ContentType = "text/javascript"
Response.Write(CIK)
End Sub
...全文
211 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小狐狸Rosie 2015-08-10
  • 打赏
  • 举报
回复
一般多应用的情况,思路应该是这样的吧。每个应用有自己的域名。进入这个域名被统一登录拦截,去cookie看有没登录,如果没有,去中央服务器看有没登录的,有登录的写cookie到该域名下,没有登录就展示登录界面, 登陆后同步给中央服务器
  • 打赏
  • 举报
回复
跨域访问cookie有安全问题,会被浏览器限制,所以需要P3P协议
X-i-n 2015-07-20
  • 打赏
  • 举报
回复
没人回答的话随便来个人接分吧,不要浪费了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧