其他浏览器都可以访问跨域请求的数据,就是火狐不能,怎样可以在火狐上调试有跨域请求的bug。。
之前看过FF下关闭跨域限制的方法:
firefox安全性强,不允许跨域调用。Firefox 要取消XMLHttpRequest的跨域限制的话
- 从 about:config 里设置 signed.applets.codebase_principal_support = true; (地址栏输入about:config 即可进行firefox设置)
- 在open的代码函数前加入类似如下的代码:
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
alert("Permission UniversalBrowserRead denied.");
}
火狐不允许跨域异步请求的时候带凭证
$.ajax({
type: 'POST',
url: url,
data: request,
async: false, //这个很诡异,chrome可以设置为false,火狐不能
xhrFields: {
withCredentials: true //把这个去掉,不带凭证。
},
contentType: "application/json; charset=UTF-8", //或者把这个改成application/x-www-form-urlencoded,把这个请求变成简单的跨域请求
success: function (result) {
if (result.code == STATUS_SUCCESS) {
alert(result.message);
window.parent.postMessage('closeWindow','*');
} else {
alert(result.message);
}
}
});
也就是说火狐不允许复杂的跨域请求(也就是带有先导请求)带有凭证 (withCredentials ),具体的可以看我的这篇文章浏览器同源策略以及跨域请求时可能遇到的问题