我正在使用一个FireFox扩展,它使用XMLHttpRequest从远程服务器获取数据。
javascript代码如下:
function _PostBackObject(data) {
var postBack = new XMLHttpRequest();
postBack.onreadystatechange =
function(){
if (postBack.readyState == 4) {
if (postBack.status == 200) {
// Success
return;
}
_ErrorOccured(postBack.status);
}
};
postBack.open("POST", postBackUrl, true, user, password); //This is line #51
postBack.send(data);
}
我在FireFox控制台中收到以下错误:
错误:未捕获的异常: [例外......“访问受限制的 URI被拒绝“代码:”1012“nsresult: “0x805303f4(NS_ERROR_DOM_BAD_URI)” 地点: “铬://my_ext/content/context.js 行:51“]
postBackUrl可以是任何东西(出于测试目的,我一直在使用本地机器[127.0.0.1]和位于本地网络上的服务器[所以192.168。*。*],都在端口8088上),因为它是用户输入
看起来我正在绊倒XSS安全措施。我该如何解决这个问题?
其他一些细节:
答案 0 :(得分:3)
首先,如果您从chrome调用此代码,则代码不应该进行任何跨站点检查。默认情况下,Chrome代码允许执行跨站点XHR。你是直接用chrome调用它,还是以某种方式将其注入内容? http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#1736
其次,XHR代码中只有三个位置返回该特定错误代码: http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#491 http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#1581 http://mxr.mozilla.org/mozilla-central/source/content/base/src/nsXMLHttpRequest.cpp#2996
它们都与预检请求有关: http://www.w3.org/TR/access-control/#preflight-request
您的服务器是否收到了其中一个,并且处理不当?