【问题标题】:Cookies not sent with AJAX request未通过 AJAX 请求发送的 Cookie
【发布时间】:2014-10-09 04:16:04
【问题描述】:

我正在尝试发送一个跨域 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 的创建和使用。显然,上面的一些细节是多余的,但我一直在尝试所有我能做到的事情,但没有成功。如果可能的话,我很想把 cookie 带回 HttpOnly。我真的以为我可以解决这个问题,但我显然错过了一些东西。非常感谢您的帮助!

【问题讨论】:

    标签: jquery ajax cookies


    【解决方案1】:

    尝试以下方法:

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

    2. 然后您可以将此代理配置为接受它可以发送到域-a 的 cookie 名称和值参数。但是要让这个工作,您需要知道 cookie 的名称并在域中为您的服务器赋值 - 需要进行身份验证。

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

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

    【讨论】:

      猜你喜欢
      • 2016-07-25
      • 1970-01-01
      • 2019-12-11
      • 2012-11-28
      • 2019-11-06
      • 2018-06-21
      • 2013-01-05
      • 1970-01-01
      • 2020-06-18
      相关资源
      最近更新 更多