请求的资源错误上没有"Access-Control-Allow-Origin"标头

Ane*_*eez 89 javascript ajax jquery json cors

我正在尝试获取新闻网站的Feed.我以为我会使用google的feed API将feedburner Feed转换为json.以下网址将以json格式从Feed返回10个帖子.http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://feeds.feedburner.com/mathrubhumi

我使用以下代码来获取上面的url的内容

$.ajax({
  type: "GET",
  dataType: "jsonp",
  url: "http://ajax.googleapis.com/ajax/services/feed/load",
  data: {
    "v": "1.0",
    "num": "10",
    "q": "http://feeds.feedburner.com/mathrubhumi"
  },
  success: function(result) {
    //.....
  }
});
Run Code Online (Sandbox Code Playgroud)

但它没有工作,我收到以下错误

XMLHttpRequest无法加载 http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http%3A%2F%2Ffeeds.feedburner.com%2Fmathrubhumi.请求的资源上不存在"Access-Control-Allow-Origin"标头.原产地" :HTTP //本地主机,因此"是不允许访问.

我该如何解决?

dkr*_*hok 106

如果您使用谷歌浏览器浏览器,则可以使用扩展程序进行攻击.

您可以在应用中找到可随时修改CORS标头的Chrome扩展程序.显然,这只是Chrome,但我喜欢它可以在任何地方进行零更改.

您可以使用它在本地计算机上调试您的应用程序(如果一切都在生产中).

注意:如果URL断开,则扩展名称为Access-Control-Allow-Origin:*.我建议您在不处理任何内容时禁用此扩展名,因为例如,youtube不适用于此扩展程序.


tha*_*nix 78

我相信这可能是Chrome不支持localhost通过Access-Control-Allow-Origin- 请参阅Chrome问题

要让Chrome Access-Control-Allow-Origin在标头中发送,只需将/ etc/hosts文件中的localhost别名替换为其他域,例如:

127.0.0.1   localhost yourdomain.com
Run Code Online (Sandbox Code Playgroud)

然后,如果您使用yourdomain.com而不是访问脚本localhost,则调用应该成功.

  • 对我也不起作用.也许Chrome的更新阻止了这个"漏洞"? (6认同)
  • 这里也没有帮助.我的网站已经以这种方式设置,但是我确实有一个很大的区别.我正在使用不同的端口.我敢肯定,如果它是相同的端口,它会工作.HTTP与HTTPS当然是不同的端口,因此可能会导致您的一些问题.我的特别是不是HTTPS,但是我试图访问同一个域上的某些东西,但是80以外的其他端口. (2认同)

小智 9

试试这个 - 通过设置标题来设置Ajax调用,如下所示:

var uri = "http://localhost:50869/odata/mydatafeeds"
$.ajax({
    url: uri,
    beforeSend: function (request) {
        request.setRequestHeader("Authorization", "Negotiate");
    },
    async: true,
    success: function (data) {
        alert(JSON.stringify(data));
    },
    error: function (xhr, textStatus, errorMessage) {
        alert(errorMessage);
    }                
});
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令行打开Chrome来运行代码:

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
Run Code Online (Sandbox Code Playgroud)