【发布时间】:2011-05-18 03:32:44
【问题描述】:
我正在尝试创建自己的 XMLHttpRequest 框架来了解这些东西是如何在内部工作的。 令我困惑的是,我找不到如何捕获“同源”异常。
这背后的想法是我尝试加载一个 URL,如果我得到一个同源异常,我会通过脚本本地的代理脚本重新请求 URL。我这样做的原因是因为我需要从开发沙箱访问生产数据,并且我希望它对脚本本身尽可能透明。
我知道这是一种不好的做法,但这是目前最不打扰的方式:)
只是为了清除一些东西 - 我不想绕过同源,我只想捕获抛出的异常,以便我可以做点什么。
这是我目前用于 xhr 的代码:
var net = function (url, cb, setts){
this.url = url;
this.cb = cb;
var oThis = this;
if (!this.xhr) {
this.xhr = new XMLHttpRequest();
this.xhr.onreadystatechange = function() {
if (oThis.xhr.readyState == 4 && oThis.xhr.status == 200) {
document.body.innerHTML += "RS: "+oThis.xhr.readyState+"; ST:"+oThis.xhr.status+"; RP:"+oThis.xhr.responseText+"<br>";
}
else {
// do some other stuff :)
document.body.innerHTML += "RS: "+oThis.xhr.readyState+"; ST:"+oThis.xhr.status+"; RP:"+oThis.xhr.responseText+"<br>";
}
}
}
this.xhr.open("GET", url,true);
this.xhr.send();
} // It's WIP so don't be scared about the unused vars or hardcoded values :)
我尝试过...赶上 xhr.send();但无济于事,仍然无法捕获异常。
任何想法或指示将不胜感激。
【问题讨论】:
标签: javascript xmlhttprequest same-origin-policy