Cookie未通过AJAX请求发送

时间:2014-10-09 04:16:05

标签: jquery ajax cookies

我尝试发送跨域AJAX请求,但我似乎无法获取身份验证Cookie。该请求将从www.site.com/path发送至api.site.com/other/path。 Cookie的详细信息包括:

域名:.site.com 路径:/ 发送:任何类型的连接 可访问脚本:是

以下是AJAX请求:

$.ajax({
    type        : 'POST',
    url         : 'http://api.site.com/path',
    contentType : "application/json",
    xhrFields   : {
        withCredentials: true
    },
    crossDomain : true,
    beforeSend  : function(xhr) {
        xhr.withCredentials = true
    },
    data        : JSON.stringify({
        'user_id' : 'id'
    }),
    success     : function() {
        alert('success');
    },
    error       : function(jqXHR, textStatus, errorThrown ) {
        alert('error');
    }
});

我控制cookie的创建和消费。显然,上面的一些细节是多余的,但我一直在努力尝试所有可能没有成功的事情。如果可能的话,我喜欢把饼干带回HttpOnly。我真的以为我能解决这个问题,但我显然错过了一些东西。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

  1. 写一个驻留在domain-b上的小代理,并将您的请求转发给domain-a。您的浏览器将允许您调用代理,因为它与调用脚本位于同一服务器上。

  2. 然后,您可以配置此代理接受可以发送到域-a的cookie名称和值参数。但要实现这一目标,您需要知道cookie的名称并重视域上的服务器 - 需要进行身份验证。

  3. 如果您正在获取JSON对象,请尝试使用JSONP请求。 jQuery支持这些。但是你需要在domain-a上改变你的服务,以便它返回有效的JSONP响应。

  4. 告诉我它是否有效。如果没有,我会寻找另一种解决方案。