我有一个应用程序1(C#),托管在端口80上,另一个应用程序2(nodejs)托管在端口3030上。两者都在本地主机上。
请求的工作流程如下:
- 浏览器发送请求到应用程序1
- 应用程序1返回cookie数量
- 稍后浏览器将请求发送到应用程序2
- ^问题在最后一步,cookie没有包含在请求中。
我尝试/了解到的事情:
- 我了解这是同源策略限制,因为端口号不同,浏览器将它们视为不同的域。
在应用程序1中(其使用System.Web.HttpCookie),我尝试将域设置为特定于端口号(“127.0.0.1: 3030”),但似乎浏览器不接受它或忽略它。
//c# code
var testCookie1 = new HttpCookie("Test", "testValue");
testCookie1.Domain = "127.0.0.1:3030";
testCookie1.Path = "/";
testCookie1.Expires = DateTime.Now.AddDays(1);
Response.SetCookie(testCookie1);
var testCookie2 = new HttpCookie("Test2", "testValue2");
testCookie2.Domain = "127.0.0.1";
testCookie2.Path = "/";
testCookie2.Expires = DateTime.Now.AddDays(1);
Response.SetCookie(testCookie2);
服务器会发送一个带有端口号的 cookie,但是浏览器似乎会忽略它。
这是我的 Ajax 调用:
var request = $.ajax({
url: 'http://127.0.0.1:3030/SomeTask',
type: 'POST',
crossDomain: true,
});