Cookie未与AJAX请求一起发送
问题描述:
我试图发送一个跨域AJAX请求,但我似乎无法获得身份验证cookie来标记。请求将从www.site.com/path发送到api.site.com/other/path。 cookie的详细信息包括:Cookie未与AJAX请求一起发送
域:.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。我真的认为我可以解决这个问题,但我显然错过了一些东西。非常感谢你的帮助!
答
尝试以下操作:
编写一个驻留在域B和转发你的请求域的一个小的代理。您的浏览器将允许您调用代理,因为它与调用脚本位于同一台服务器上。
然后可以将此代理配置为接受它可以发送到域-a的cookie名称和值参数。但为了实现这一点,您需要知道cookie的名称并在域上对您的服务器进行评估 - 我们希望进行身份验证。
如果您正在提取JSON对象,请尝试改为使用JSONP请求。 jQuery支持这些。但是你需要在domain-a上改变你的服务,以便它返回有效的JSONP响应。
告诉我,如果它的工作。如果不是,我会寻找另一种解决方案。