我尝试发送跨域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。我真的以为我能解决这个问题,但我显然错过了一些东西。非常感谢你的帮助!
答案 0 :(得分:0)
尝试以下方法:
写一个驻留在domain-b上的小代理,并将您的请求转发给domain-a。您的浏览器将允许您调用代理,因为它与调用脚本位于同一服务器上。
然后,您可以配置此代理接受可以发送到域-a的cookie名称和值参数。但要实现这一目标,您需要知道cookie的名称并重视域上的服务器 - 需要进行身份验证。
如果您正在获取JSON对象,请尝试使用JSONP请求。 jQuery支持这些。但是你需要在domain-a上改变你的服务,以便它返回有效的JSONP响应。
告诉我它是否有效。如果没有,我会寻找另一种解决方案。