Javascript 通过跨域帖子发送凭据?
根据,Firefox只会在以下情况下发送凭证和跨域帖子Javascript 通过跨域帖子发送凭据?,javascript,jquery,cross-domain,Javascript,Jquery,Cross Domain,根据,Firefox只会在以下情况下发送凭证和跨域帖子 invocation.withCredentials=“true” 设置了…但jQuery的Ajax API似乎没有为此提供任何机制 我错过了什么吗?还有其他方法吗?您可以使用回调设置其他参数(将XMLHTTPRequest对象作为其唯一参数传递给它) 正如您所知,这种类型的跨域请求在正常的站点场景中不起作用,也不适用于任何其他浏览器。我甚至不知道FF 3.5还施加了哪些安全限制,只是为了让你不要无缘无故地把头撞到墙上: $.ajax({
invocation.withCredentials=“true”代码>
设置了…但jQuery的Ajax API似乎没有为此提供任何机制
我错过了什么吗?还有其他方法吗?您可以使用回调设置其他参数(将XMLHTTPRequest
对象作为其唯一参数传递给它)
正如您所知,这种类型的跨域请求在正常的站点场景中不起作用,也不适用于任何其他浏览器。我甚至不知道FF 3.5还施加了哪些安全限制,只是为了让你不要无缘无故地把头撞到墙上:
$.ajax({
url: 'http://bar.other',
data: { whatever:'cool' },
type: 'GET',
beforeSend: function(xhr){
xhr.withCredentials = true;
}
});
还有一件事需要注意,jQuery的设置是为了规范浏览器之间的差异。您可能会发现jQuery库施加了进一步的限制,禁止这种类型的功能。功能应该在jQuery 1.5中被打破
由于jQuery1.5.1,您应该使用xhrFields参数
$.ajaxSetup({
type: "POST",
data: {},
dataType: 'json',
xhrFields: {
withCredentials: true
},
crossDomain: true
});
文件:
报告的错误:在jQuery 3和早期版本中,以下更简单的配置也适用于单个请求:
$.ajax(
'https://foo.bar.com,
{
dataType: 'json',
xhrFields: {
withCredentials: true
},
success: successFunc
}
);
我在Firefox开发工具->网络选项卡(针对单个请求的安全选项卡)中遇到的完整错误是:
连接到foo.bar.com.SSL对等服务器时出错
无法协商一组可接受的安全参数。错误
代码:SSL\u错误\u握手\u失败\u警报
根据它应该是“GET”类型,而不是“GET”方法,我在使用你的example@Xosofox我知道这是一个旧的注释,但从jQuery1.9开始,支持方法:'GET'
。请注意,这在jQuery3+中不再有效,因为(a)此函数的api已更改,(b)它不再具有对XHR对象的访问权限,XHR对象是在该函数运行后创建的。相反,您应该使用xhrFields。现在我可以将cookie发送到子域:)谢谢!这也适用于跨(非子域)ajax请求吗?我仍然得到提示credentials@JohnGrabanski您解决了问题吗?我很困惑,您在哪里添加实际凭据?