通过跨域post发送凭证?

根据具有凭据的请求 ,Firefox将只会发送证书以及跨域post

invocation.withCredentials = "true";

设置…但似乎并不像jQuery的Ajax API提供了这个任何机制。

有什么我错过了吗? 有其他的方式可以做到吗?

jQuery 1.5中应该会破坏function。

由于jQuery 1.5.1,你应该使用xhrFields参数。

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

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

报告错误: http : //bugs.jquery.com/ticket/8146

您可以使用beforeSendcallback来设置其他参数(将XMLHTTPRequest对象作为唯一parameter passing给它)。

只是你知道,这种types的跨域请求不能在正常的站点场景中运行,也不能在任何其他浏览器中运行。 我甚至不知道FF 3.5所强加的安全限制,只是为了不让你的头靠在墙上,

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

还有一件事要注意的是,jQuery的设置正常化浏览器的差异。 您可能会发现,jQuery库禁止这种types的function进一步限制。

在jQuery 3和更早的版本中,以下更简单的configuration也适用于单个请求:

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

我在Firefox开发工具 – >networking选项卡(在单个请求的安全选项卡)得到完整的错误是:

在连接到foo.bar.com.tw时发生错误.SSL peer无法协商一组可接受的安全参数。错误代码:SSL_ERROR_HANDSHAKE_FAILURE_ALERT