javascript - 跨域 POST 请求不发送 cookie Ajax Jquery

标签 javascript jquery ajax cookies cross-domain

似乎已经在 stackoverflow 上讨论过类似的东西,但我找不到完全相同的东西。

我正在尝试使用 CORS(跨源资源共享)发送 Cookie,但它不起作用。

这是我的代码。

$.ajax(
    { 
      type: "POST",
      url: "http://example.com/api/getlist.json",
      dataType: 'json',
      xhrFields: {
           withCredentials: true
      },
      crossDomain: true,
      beforeSend: function(xhr) {
            xhr.setRequestHeader("Cookie", "session=xxxyyyzzz");
      },
      success: function(){
           alert('success');
      },
      error: function (xhr) {
             alert(xhr.responseText);
      }
    }
);

我在请求 header 中没有看到这个 cookie。

最佳答案

您不能通过 JavaScript 在 CORS 请求上设置或读取 cookie。尽管 CORS 允许跨域请求,但 cookie 仍然受制于浏览器的同源策略,这意味着只有来自同源的页面才能读取/写入 cookie。 withCredentials 仅表示将远程主机设置的任何 cookie 发送到该远程主机。您必须使用 Set-Cookie header 从远程服务器设置 cookie。

关于javascript - 跨域 POST 请求不发送 cookie Ajax Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462423/

相关文章:

javascript - 使用javascript制作一种弹出窗口

javascript - jQuery keyup = 而不是 ==

javascript - SmoothDivScroll;左 HotSpot 太快,Right HotSpot 什么都不做

ruby-on-rails - 如何使用 Simple Form 创建交互式表单?

asp.net - 从 ASP.Net 绘制谷歌地图

javascript - express-hbs 实例 registerAsyncHelper 奇怪的哈希

javascript - Tab 在 Jquery 中消失了

javascript - Shopify + CartJS 用 JS 更新总价?

javascript - 在 Chart.js 中更改 X 和 Y 轴值的颜色

javascript - 为什么服务器端 DataTable 上的 rows() 不是函数?