如何在ajax响应中设置浏览器中的cookie

时间:2018-03-19 05:13:53

标签: javascript jquery ajax cookies

我有一个使用jQuery的javascript函数向Web服务发出POST请求。 Web服务响应有一个标题" Set-Cookie:name = value;域= api.mydomain.com; path = /"和JSON正文。

我希望浏览器设置cookie,但事实并非如此。我错误地认为这应该如何运作?是否有另一种方法可以让浏览器设置响应头中返回的cookie?

$.ajax(
    {
        type: "POST",
        url: "https://api.mydomain.com/service",
        data: body,
        success: handleSuccess,
        error: handleFailure
    }
);

2 个答案:

答案 0 :(得分:0)

您可以在jQuery中使用localStorage将数据存储在浏览器中。要设置数据,请使用

alert(localStorage.yourdataname);

要恢复数据,请使用

{{1}}

如果AJAX请求的灵魂目的是在浏览器中设置数据,您只需使用上面的代码请求AJAX。

答案 1 :(得分:0)

根据XMLHttpRequest Level 1和XMLHttpRequest Level 2,这个特定的响应头部属于你可以使用getResponseHeader()

获得的“禁止”响应头。
$.ajax({
    type: 'POST',
    url:"https://api.mydomain.com/service",
    data: body,
    success: function(output, status, xhr) {
        alert(xhr.getResponseHeader('Set-Cookie'));
    },
    cache: false
});

如果它在您的浏览器上不起作用,请使用此

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length,c.length);
    }
    return "";
} 

success: function(output, status, xhr) {
    alert(getCookie("MyCookie"));
},

希望这有帮助。