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



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

但是,当我在新选项卡中打开该请求时,所有 cookie 都会一起发送。

笔记:

  1. X-Requested-With没有定义(代码$.ajax(),但似乎浏览器将此请求视为跨域请求)
  2. 推送服务器正在运行domain.com:7171
  3. 应用服务器正在domain.com上运行
  4. 网址适用于GET方法
  5. 当我们从地址栏向同一 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/

相关内容

  • 没有找到相关文章

最新更新