发送跨域帖子凭据?发送跨域帖子凭据?(Sending credentials with cross-

2019-05-08 22:47发布

根据与凭证请求 ,Firefox将只发送凭据连同跨域的职位,如果

invocation.withCredentials = "true";

设置...但它似乎并不像jQuery的Ajax API提供任何机制来此。

是不是有什么我已经错过了? 有一些其他办法,我能做到吗?

Answer 1:

功能应该是在jQuery的1.5被打破。

由于jQuery的1.5.1,你应该使用xhrFields PARAM。

$.ajaxSetup({
    type: "POST",
    data: {},
    dataType: 'json',
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true
});

文档: http://api.jquery.com/jQuery.ajax/

报告的bug: http://bugs.jquery.com/ticket/8146



Answer 2:

您可以使用beforeSend回调设置其他参数( XMLHTTPRequest对象传递给它作为其唯一的参数)。

只要你知道,这种类型的跨域请求将无法在正常的站点方案,不与其他任何浏览器。 我甚至不知道什么安全限制FF 3.5规定为好,只是让你不靠墙白白打你的头:

$.ajax({
    url: 'http://bar.other',
    data: { whatever:'cool' },
    type: 'GET',
    beforeSend: function(xhr){
       xhr.withCredentials = true;
    }
});

还有一两件事要提防的是,jQuery是建立标准化浏览器的差异。 你可能会发现,进一步限制由jQuery库,禁止这种类型的功能强加的。



Answer 3:

在jQuery的3,也许更早的版本,下面简单的配置也适用于个人的要求:

$.ajax(
        'https://foo.bar.com,
        {
            dataType: 'json',
            xhrFields: {
                withCredentials: true
            },
            success: successFunc
        }
    );

完整的错误,我在Firefox开发工具让 - >网络选项卡(安全选项卡单个请求)为:

发生错误时foo.bar.com.SSL同行的连接无法协商一组可接受的安全parameters.Error代码:SSL_ERROR_HANDSHAKE_FAILURE_ALERT



文章来源: Sending credentials with cross-domain posts?