javascript - 设置 CORS header 在 Chrome、Firefox 或移动浏览器上不起作用

标签 javascript cors

我正在尝试消耗第三方的响应。它在 IE 中工作正常,但在 Chrome、Firefox 或我的移动浏览器中无法工作。我谷歌并尝试了一些代码,但仍然面临同样的问题。我知道它的 CORS 错误,并且有很多引用资料或教程可用,我想知道为什么我的代码不起作用,错误是什么?

var xhr = new XMLHttpRequest();
        xhr.open("GET", "http://api.<third_party_sitename>.com/json/feeds?system=" + abc);
        xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
        xhr.setRequestHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, HEAD");
        xhr.setRequestHeader("Access-Control-Allow-Headers", "X-Requested-With");
        xhr.setRequestHeader("Access-Control-Max-Age", "1728000");
        //xhr.setRequestHeader("Connection", "Keep-Alive");
        xhr.setRequestHeader("Content-Type", "application/json");
        xhr.onreadystatechange = function () {
            if (this.readyState == 4) {
                var datax = JSON.stringify(this.responseText);
                var jsonObj = jQuery.parseJSON(datax);

                 displayPin(jsonObj);

            }
        };
        xhr.send(null);

最佳答案

Access-Control-Allow-Origin和 co 是响应 header 。您向其发出请求的服务器 ( api.<third_party_sitename>.com ) 必须在响应中设置它们。

它们不是请求 header 。您的 JavaScript 无法授予自身从任意第三方站点读取数据的权限。

关于javascript - 设置 CORS header 在 Chrome、Firefox 或移动浏览器上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254420/

相关文章:

angularjs - 如何使用 angular.js-resource 启用 cors 请求

asp.net-core - 从 Blazor 发出 CORS 请求时如何包含凭据?

angularjs - 预检响应中的 Access-Control-Allow-Methods 不允许方法 PUT

javascript - ajax 请求中没有 'Access-Control-Allow-Origin',但不是通过单击 <a> 标记链接

c# - 'Access-Control-Allow-Origin' header 包含多个值。但是我在标题中只定义了一个值?

javascript - Not implemented Javascript 错误在 IE7 中绑定(bind)函数时

javascript - 改变 JSON 对象的 React 状态 将数组存储为值

javascript - jQuery刷新特定div

javascript - 如何从 optgroup 中查找值,然后查找值选项添加所选属性

javascript - 在 JavaScript 中单击另一个 Accordion 时删除事件的 Accordion