【发布时间】:2018-01-04 18:59:36
【问题描述】:
我有一个托管在端口:80 上的应用程序 1(C#)和托管在端口:3030 上的应用程序 2(nodejs)。两者都在本地主机上。
请求流程如下:
- 浏览器向应用程序 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,
});
【问题讨论】:
-
两台服务器正在相互通信,在舞台/生产级别这将很容易实现,因为它们将具有相同的域和相同的端口 (80),但我正试图让它在本地主机上工作以获取开发环境。 @CodeCaster
-
你是如何让它工作的?
标签: c# node.js google-chrome http cookies