【发布时间】:2011-04-10 00:26:23
【问题描述】:
我正在尝试使用 JQuery.ajax 从本地文件 (file://) 到 http:// 上的某些内容执行 XMLHttpRequest,从我可以看到它看起来请求正在发出(成功回调被调用并且 Firebug 显示请求)但根本没有响应返回。
这基本上是我正在做的事情:
$.ajax({
url: "https://stackoverflow.com/users/63736/bruce-van-der-kooij",
dataType: "text",
success: function(text) {
alert(text)
}
})
注意我使用的是datatype: "text",但你使用什么并不重要。
这将显示一个空警报。
现在,如果我不得不猜测,我不得不说这与同源策略有关,但我没有得到典型的 NS_ERROR_DOM_SECURITY_ERR 异常(错误控制台中什么都没有)。
那么有人对发生的事情有解释吗?
相关
更新:
所以我遇到了一个July 2009 article at hacks.mozilla.org,它似乎可以解释发生了什么。显然 Firefox >= 3.5 实现了Cross-Origin Resource Sharing (CORS) specification,它提供了一种机制来允许您进行跨站点请求。文章中解释了这种情况下发生的情况:
在 Firefox 3.5 和 Safari 4 中,如果服务器没有将适当的 CORS 标头(特别是 Access-Control-Allow-Origin 标头)与资源一起返回,则跨站点 XMLHttpRequest 将无法成功获取资源,尽管请求将通过。
请注意,在我的情况下,请求发送时带有标头Origin: null,并返回200 OK 响应。但是,服务器没有发回适当的标头,因此没有检索到响应正文。
另见:
【问题讨论】:
-
试图链接一些本质上描述相同问题的问题。 stackoverflow.com/questions/3595515/…stackoverflow.com/questions/5138057/…
标签: javascript jquery xmlhttprequest