浏览器在ajax请求上发送Origin头,但不使用简单的HTTP Get请求。为什么?

时间:2012-12-18 14:41:48

标签: ajax http cookies cross-domain cors

我使用SignalR作为我的推送服务器(.NET的东西),在这个过程的某个地方,脚本发送一个ajax请求,但不发送cookie。

但是,当我在新标签中打开该请求时,所有Cookie都会同时发送。

注意:

  1. X-Requested-With未定义(代码为$.ajax(),但似乎浏览器将此请求视为跨域请求)
  2. 推送服务器正在domain.com:7171
  3. 上运行
  4. App服务器正在domain.com
  5. 上运行
  6. 该网址使用GET方法
  7. 当我们从地址栏(简单的HTTP Get)向同一网址发送简单请求时,会发送Cookie
  8. 为什么在HTTP获取请求时将cookie发送到同一个URL,并且当它是ajax请求时不发送?

1 个答案:

答案 0 :(得分:0)

您提到这是从domain.com到domain.com:7171的跨域请求。默认情况下,Cookie不包含在跨域请求中。您需要通过设置.withCredentials = true; in your JQuery request明确表明您想要包含Cookie。您的服务器还需要使用标头Access-Control-Allow-Credentials: true进行响应。您可以在此处了解详情:http://www.html5rocks.com/en/tutorials/cors/