我有两个网站:
- www.foo.com
- www.bar.com
在 www.bar.com/page.aspx
上,我设置了一个带有名称" baz"的会话cookie,然后重定向到 www.foo.com/page2.aspx
:
// set the "baz" cookie
Response.Cookies["baz"].Value = "test";
Response.Cookies["baz"].HttpOnly = false;
// redirect to www.foo.com/page2.aspx
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", "http://www.foo.com/page2.aspx");
在www.foo.com/page2.aspx
上,我包括www.bar.com
的JavaScript,例如:
<html>
<head>
<script src="//www.bar.com/script.js"></script>
...
script.js
向www.bar.com/ajax.aspx
提出AJAX请求(同一服务器):
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", 'http://www.bar.com/ajax.aspx', true);
xmlhttp.send();
和ajax.aspx
尝试读取" baz" cookie
string cookie = Request.Cookies["baz"].Value
但是" baz" cookie是 null
!
如果我将 www.bar.com/ajax.aspx
打开到浏览器中,则正确读取了cookie。
这是一个CORS问题?如何解决?
如果我正确理解您的问题,这是浏览器安全性,它阻止服务器从其他站点获得cookie。解决此问题的工作是通过查询字符串将cookie从bar传递到foo:
// redirect to www.foo.com/page2.aspx
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", "http://www.foo.com/page2.aspx?baz=test");
然后获取值:
string cookie = Request.QueryString["baz"];