我'm trying to fetch the feed of a news website. Thought I' d使用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){
//.....
}
});
但它没有工作,我收到以下错误
的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'访问 .
我该如何解决?
7 回答
仅供参考,我注意到jQuery文档中的这些信息,我认为这些信息适用于此问题:
像@thanix这样更改主机文件对我来说不起作用,但@dkruchok提到的扩展确实解决了这个问题 .
如果您使用的是Chrome,也可以安装此扩展程序 .
我相信这可能是Chrome不支持
localhost
来通过Access-Control-Allow-Origin
- see Chrome issue要让Chrome在标头中发送
Access-Control-Allow-Origin
,只需将/ etc / hosts文件中的localhost别名替换为其他域,例如:然后,如果您使用
yourdomain.com
而不是localhost
访问脚本,则调用应该成功 .如果您使用谷歌浏览器浏览器,您可以使用扩展程序进行攻击 .
您可以找到一个Chrome extension,它将在您的应用程序中动态修改CORS标头 . 显然,这只是Chrome,但我喜欢它可以在任何地方进行零更改 .
您可以使用它在本地计算机上调试您的应用程序(如果一切都在 生产环境 中) .
Notice :如果URL损坏,则扩展名为 **Access-Control-Allow-Origin: *** . 我建议您在不处理任何内容时禁用此扩展名,因为例如,youtube不适用于此扩展程序 .
试试这个 - 通过设置 Headers 来设置Ajax调用,如下所示:
然后使用以下命令行打开Chrome来运行代码:
Chrome没有't allow you to integrate two different localhost,that'为什么我们收到此错误 . 您只需要从nuget manager包含Microsoft Visual Studio Web Api Core包 . 并在
WebApiConfig.cs
文件中的WebApi项目中添加两行代码 .然后全部完成 .
请在Spring启动控制器的
backendside
上使用@CrossOrigin
(类级别或方法级别),因为Chrome错误'No 'Access-Control-Allow-Origin'
标头的解决方案出现在请求的资源上 . “这个解决方案100%为我工作......