CORS:通过两个网站和客户端/服务器语言(JavaScript和ASP.NET C#)编写和阅读cookie



我有两个网站:

  1. www.foo.com
  2. 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.jswww.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"];

最新更新