【问题标题】:Cross-Origin Request Blocked - This can be fixed by enabling CORS跨域请求被阻止 - 这可以通过启用 CORS 来解决
【发布时间】:2014-09-06 16:52:04
【问题描述】:

我正在尝试在我的 AngularJS 应用程序中向 rotten tomatoes API 发出一个简单的 http GET 请求,但是当我运行它时,我在浏览器控制台中得到了这个:

跨域请求被阻止:同源策略不允许读取 远程资源在 http://api.rottentomatoes.com/api/public/v1.0/movies/770672122.json?apikey=[myApiKey]。 这可以通过将资源移动到同一域或 启用 CORS。

注意:“[myApiKey]”已替换为我的实际密钥...

我已经在 Chrome 和 Firefox 上试过了,虽然我知道在启动 Chrome 时可以附加一些参数来禁用它,但普通用户不知道如何做到这一点,所以从浏览器兼容性来看选项对我不起作用。我还尝试从我的桌面以及本地 Tomcat 实例运行我的应用程序。

所以我发现这可以通过启用 CORS 来解决。现在我该怎么做?显然我不能接触烂番茄服务器,所以这必须从我这边 - 客户端来完成。

【问题讨论】:

  • 需要在服务器上启用CORS。您可能需要为此 API 编写一些代理。
  • 根据这个帖子developer.rottentomatoes.com/forum/read/129615 有人已经请求了这个功能......但他们似乎没有回应这个请求。
  • 从服务器端调用api并从您的客户端访问服务器端
  • 所以基本上就目前而言,没有人可以为烂番茄 API 创建 Angular 客户端?他们已经 3 年没有响应功能请求了,我猜他们永远不会启用 CORS。
  • 看看能不能发出 JSONP 请求 stackoverflow.com/questions/19916362/… 。 API 必须支持这种情况发生

标签: javascript json angularjs http cors


【解决方案1】:
【解决方案2】:

您需要向 rottentomatoes API 发出 JSONP 请求,而不是普通的 JSON

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2023-04-02
    • 2021-10-03
    • 1970-01-01
    • 2021-06-26
    • 2014-10-13
    • 2016-01-21
    相关资源
    最近更新 更多