跨域无法添加cookie吗?

hao_cool 2015-07-13 09:32:53
有两个站点,
第一个:www.domain.com , 有一个userservice.ashx页面,内容如下

public void ProcessRequest(HttpContext context)
{
HttpCookie cookie = new HttpCookie("name","zhangsan");
cookie.Domain = ".domain.com";
cookie.Expires = DateTime.Now.AddMonths(1);
cookie.Path = "/";
context.Response.Cookies.Add(cookie);

context.Response.AddHeader("Access-Control-Allow-Credentials","true");
context.Response.AddHeader("Access-Control-Allow-Origin","http://client.domain.com");
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}

第二个站点:client.domain.com,使用ajax发送请求到userservice.ashx

$.ajax({ url: 'http://www.domain.com/userservice.ashx?date=' + escape(new Date()), data: '', datatype: 'text', type: 'POST', cache: false,
success: function(data) {
alert(getCookie("name"));
}
})

现在可以执行ProcessRequest方法,也就是说跨域没有问题,但是却无法执行添加cookie操作,不知道是不是这种方法本来就无法执行对cookie的操作,希望知道的朋友能帮忙解答,谢谢!
...全文
220 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hao_cool 2015-07-14
  • 打赏
  • 举报
回复
引用 3 楼 zhuankeshumo 的回复:
还有一种flash cookie 广告商用(无所不能,超级cookie) https://nfriedly.github.io/Javascript-Flash-Cookies/ https://github.com/nfriedly/Javascript-Flash-Cookies
这个之前还真不知道,可以尝试去试一下。
hao_cool 2015-07-14
  • 打赏
  • 举报
回复
引用 2 楼 zhuankeshumo 的回复:
你可以cookie数据Redirect到这个域名client.domain.com下处理程序 然后再在处理程序中 cookie.Domain = ".domain.com"; cookie.Expires = DateTime.Now.AddMonths(1); cookie.Path = "/"; Response.Cookies.Add(cookie);
因为cookie存储这一块还涉及到一些逻辑处理,我想尽量都放在www.domain.com处理。
hao_cool 2015-07-14
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
查找下P3P协议,正常为了安全性,跨域是不允许操作cookie的
以上client.domain.com 端这样直接加载就能执行服务端cookie操作了。

var sc = document.createElement("script");
sc.src = 'http://www.domain.com/userservice.ashx';
document.body.appendChild(sc);
  • 打赏
  • 举报
回复
跟跨不跨域的没有关系,ajax跟cookie就没有关系。如果需要提交和返回参数,你应该在ajax参数中自己输入输出,跟cookie没有关系。
newtee 2015-07-13
  • 打赏
  • 举报
回复
还有一种flash cookie 广告商用(无所不能,超级cookie) https://nfriedly.github.io/Javascript-Flash-Cookies/ https://github.com/nfriedly/Javascript-Flash-Cookies
newtee 2015-07-13
  • 打赏
  • 举报
回复
你可以cookie数据Redirect到这个域名client.domain.com下处理程序 然后再在处理程序中 cookie.Domain = ".domain.com"; cookie.Expires = DateTime.Now.AddMonths(1); cookie.Path = "/"; Response.Cookies.Add(cookie);
  • 打赏
  • 举报
回复
查找下P3P协议,正常为了安全性,跨域是不允许操作cookie的

62,046

社区成员

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

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

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

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