请求的资源错误中没有“Access-Control-Allow-Origin”标题

我正在尝试获取新闻网站的Feed。 以为我会使用谷歌的饲料API将feedburner饲料转换成JSON。 以下url将以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){ //..... } }); 

但它不工作,我得到以下错误

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”标题。 Origin'http:// localhost '因此不被允许访问。

我该如何解决?

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

要让Chrome在标头中发送Access-Control-Allow-Origin ,只需将/ etc / hosts文件中的本地主机别名到其他域,如:

 127.0.0.1 localhost yourdomain.com 

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

如果您使用Google Crome浏览器,则可以使用扩展名进行破解。

您可以find一个Chrome扩展程序 ,在您的应用程序中即时修改CORS标头。 显然,这只是Chrome浏览器,但我喜欢它可以在任何地方进行零改动。

你可以使用它来在本地机器上debugging你的应用程序(如果一切正常工作)

注意 :如果URL被破坏,扩展名是“Access-Control-Allow-Origin:*” 。 我build议你在不使用自己的东西的时候禁用这个扩展,例如,youtube不能使用这个扩展。

试试这个 – 通过设置标题来设置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); } }); 

然后通过以下命令行打开Chrome来运行代码:

 chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security 

如果您使用的是Chrome,也可以安装此扩展程序。

 Access-Control-Allow-Origin: * 

请在Spring引导控制器(类级别或方法级别)的backendside使用@CrossOrigin ,因为Chrome的解决scheme错误'No 'Access-Control-Allow-Origin'头部存在于请求的资源中。

这个解决scheme为我工作100%…

例如:class级

 @CrossOrigin @Controller public class UploadController { 

– – – 要么 – – – –

示例:方法级别

 @CrossOrigin(origins = "http://localhost:3000", maxAge = 3600) @RequestMapping(value = "/loadAllCars") @ResponseBody public List<Car> loadAllCars() { Ref: https://spring.io/blog/2015/06/08/cors-support-in-spring-framework