未通过跨域AJAX请求设置Cookie [英] Cookies are not set from Cross domain AJAX request

查看:192
本文介绍了未通过跨域AJAX请求设置Cookie的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在页面 http://vista.local/上加载JavaScript.该脚本将POST请求发送到网络服务 http://api.vista.local/sessions ,该请求会设置Cookie是在响应中设置的

I am loading a javascript on my page http://vista.local/. The script sends a POST request to a webservice http://api.vista.local/sessions which sets the cookies is set in the response

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,不带域,带域.什么都行不通.

I tried different types of cookies.. HttpOnly, non-HttpOnly without domain, with domain. Nothing works.

我要请求的JS/JQuery代码

My JS/JQuery code to request

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

Set the withCredentials

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

这篇关于未通过跨域AJAX请求设置Cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆