我正在使用SignalR作为我的推送服务器(.NET的东西),在这个过程中的某个地方,脚本发送ajax请求,但不发送cookie。
但是,当我在新选项卡中打开该请求时,所有 cookie 都会一起发送。
笔记:
-
X-Requested-With
没有定义(代码$.ajax()
,但似乎浏览器将此请求视为跨域请求) - 推送服务器正在运行
domain.com:7171
- 应用服务器正在
domain.com
上运行 - 网址适用于
GET
方法 - 当我们从地址栏向同一 URL 发送简单请求(简单 HTTP Get 时),会发送 cookie
为什么 cookie 在 HTTP get 请求时发送到同一个 URL,而在 ajax 请求时不发送?
您提到这是一个从 domain.com 到 domain.com:7171 的跨域请求。默认情况下,跨域请求中不包含 Cookie。您需要通过在 JQuery 请求中设置.withCredentials = true;
来明确表明您希望包含 Cookie。您的服务器还需要使用标头Access-Control-Allow-Credentials: true
进行响应。您可以在此处了解更多信息:http://www.html5rocks.com/en/tutorials/cors/