Javascript 通过跨域帖子发送凭据?

Javascript 通过跨域帖子发送凭据?,javascript,jquery,cross-domain,Javascript,Jquery,Cross Domain,根据,Firefox只会在以下情况下发送凭证和跨域帖子 invocation.withCredentials=“true” 设置了…但jQuery的Ajax API似乎没有为此提供任何机制 我错过了什么吗?还有其他方法吗?您可以使用回调设置其他参数(将XMLHTTPRequest对象作为其唯一参数传递给它) 正如您所知,这种类型的跨域请求在正常的站点场景中不起作用,也不适用于任何其他浏览器。我甚至不知道FF 3.5还施加了哪些安全限制,只是为了让你不要无缘无故地把头撞到墙上: $.ajax({

根据,Firefox只会在以下情况下发送凭证和跨域帖子

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您解决了问题吗?我很困惑,您在哪里添加实际凭据?