jquery - 跨域 AJAX 请求未设置 Cookie

标签 jquery ajax cookies

我正在我的页面上加载 JavaScript http://vista.local/ 。该脚本向 Web 服务发送 POST 请求 http://api.vista.local/sessions设置 cookie 是在响应中设置的

Accept-Ranges:bytes
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Accept, Origin, Content-Type, Cookie
Access-Control-Allow-Methods:GET,POST
Access-Control-Allow-Origin:http://vista.local
Age:0
Cache-Control:public, max-age=1
Connection:keep-alive
Content-Length:36
Content-Type:application/json
Date:Sun, 23 Aug 2015 06:00:45 GMT
Server:Apache-Coyote/1.1
Set-Cookie:vista-session=c07c4d25-5c6e-47a3-9bbc-60f7d122075a;Domain=.vista.local;Path=/;HttpOnly
Set-Cookie:vista-loggedin=true;Domain=.vista.local;Path=/;
Set-Cookie:vista-user-email=vista1839@yahoo.com;Domain=.vista.local;Path=/;HttpOnly
Set-Cookie:vista-session-dummy=c07c4d25-5c6e-47a3-9bbc-60f7d122075a;Version=1
Set-Cookie:vista-secured-session=08239195-e95e-4f42-adeb-5d9c745ca853;Domain=.vista.local;Path=/;Secure;HttpOnly
Vary:Accept-Encoding,User-Agent
X-UA:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.99 Safari/537.36

我尝试了不同类型的cookie..HttpOnly、不带域的非HttpOnly、带域。没有任何效果。

我要请求的 JS/JQuery 代码

function login(formdata) {
    $.ajax({
        url : api.sessions,
        method : "POST",
        data : JSON.stringify(formdata),
        dataType : 'text',
        contentType: 'application/json',
        success : function(data) {
            console.log("yeeeii")
        },
        error: function(jqXHR, textStatus, errorThrown) {
            $(".error").html(textStatus);
        }
    });
}

最佳答案

设置 withCredentials

...
method : "POST",
xhrFields: {
    withCredentials: true
},
...

关于jquery - 跨域 AJAX 请求未设置 Cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750507/

相关文章:

php - 如何使用 Ajax 从 MySQL 获取信息?

javascript - 使用 JSON 数据用数据库对象填充 Google map

javascript - 显示 JSON 响应

jquery - 在phonegap应用程序中使用jquery管理cookie的位置?

在 iframe 内容中设置 document.domain 的安全隐患

javascript - 仅突出显示包含复选框的单元格

javascript - html 中的 JScript 未运行或未被调用

reactjs - 使用具有另一个来源的 API (CORS) 来响应应用程序

jquery - 将行添加到 jQuery 表中当前行之后

javascript - 在计时器上重复/循环 ajax 调用 - 即使超时