【问题标题】:Can't get a XMLHttpRequest's response neither from local file:/// nor from local web server无法从本地文件:/// 或本地 Web 服务器获得 XMLHttpRequest 的响应
【发布时间】:2013-07-31 04:02:56
【问题描述】:

我想开发一个小型 RSS 阅读器,它可以从各种网站获取 XML 文档。 我认为 XHR 会很简单,如果用户可以操纵浏览器 UI 来获取明显的“跨源”网页,JavaScript 代码不应该能够轻松做到这一点吗?显然没有:/

这是我想要做的:

var xhr = new XMLHttpRequest();
    // A real feed URL, its web server should allow CORS
    xhr.open('GET', 'http://feeds2.feedburner.com/thenextweb');
    xhr.send();

在本地打开我的 HTML 页面 (file:///) 会使 Origin 为空且响应为空,但如果我通过本地 Web 服务器访问该页面(我尝试了 Python 和 Node 服务器脚本),则 Origin 不为空但响应仍然是空的。

我知道周围有足够多的 XHR 问题,但有人能指出我遗漏了什么吗?

【问题讨论】:

    标签: javascript xmlhttprequest cors


    【解决方案1】:

    Feedburner 不支持 CORS(目前)。这些是我从 jsfiddle 执行代码时从 feedburner 收到的标头:

    HTTP/1.1 200 OK
    Content-Type: text/xml; charset=UTF-8
    ETag: ckkcnAejDTcF+4d0Kj6kftZuq+0
    Last-Modified: Tue, 30 Jul 2013 19:56:16 GMT
    Content-Encoding: gzip
    Transfer-Encoding: chunked
    Date: Tue, 30 Jul 2013 19:58:11 GMT
    Expires: Tue, 30 Jul 2013 19:58:11 GMT
    Cache-Control: private, max-age=0
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    Server: GSE
    

    如果它支持 CORS,您应该会在其中看到 Access-Control-Allow-Origin 标头

    【讨论】:

    • 感谢您的回答。在这种情况下,您是否有支持 CORS 的 RSS 提要示例?我尝试了各种其他流行的提要,但都没有给出“Access-Control-Allow-Origin”标题。我不确定 CORS 是否是一种罕见的东西,或者我是否错误地上网。
    • 我认为您可以通过 Google Feed API 使用 JSONP 来获取您正在寻找的大部分内容:https://ajax.googleapis.com/ajax/services/feed/find?v=1.0&q=The%20Next%20Web&callback=processResults。 API 记录在这里:developers.google.com/feed
    猜你喜欢
    • 1970-01-01
    • 2016-10-13
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多