【问题标题】:Ruby on Rails Ajax Call on Wiki API returns CORS issueRuby on Rails Ajax 调用 Wiki API 返回 CORS 问题
【发布时间】:2016-11-10 15:10:53
【问题描述】:

我正在测试来自维基百科的 api 端点:

https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json

在 Ruby on Rails 上使用 Ajax 调用。本教程建议使用我正在使用的咖啡脚本。

$.ajax 'https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json',
type: 'GET'
format: 'json'
origin: 'https://www.mediawiki.org'
success: (data, textStatus, jqXHR) ->
    console.log(data);

我得到的只是这个错误:

跨域请求被阻止:同源策略不允许读取位于https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json 的远程资源。 (原因:CORS 标头“Access-Control-Allow-Origin”缺失)。

我已经研究过这个问题并尝试了 rack-cors 然后配置它,但到目前为止,我仍然遇到 CORS 问题并且无法检索 api 端点结果。有人可以帮忙吗?

【问题讨论】:

  • 我很困惑,您“在 ruby​​ on rails 上使用 ajax 调用”并且您在调用 wikipedia?这没有任何意义,您不能在 javascript 上设置 'origin' 标头。如果您控制服务器,则需要在您的 ruby​​ on rails 视图中添加response.headers['Access-Control-Allow-Origin'] = '*' ..除此之外..这不会起作用的朋友。给我详细信息,我会提供更多帮助
  • 我正在尝试使用 wikipedia api 端点并为此执行此操作,我实现了一个 ajax 调用来检索端点的结果。我无法得到结果,所以我一直在阅读 CORS 功能,而在 Ruby 上允许这样做的宝石之一是 RACK-CORS。但是,我仍然没有得到任何东西。

标签: ajax ruby-on-rails-3 coffeescript wikipedia-api


【解决方案1】:

我用这段代码解决了我的问题:

$.ajax 'https://en.wikipedia.org/w/api.php?action=query&titles=Main%20Page&prop=revisions&rvprop=content&format=json',
type: 'GET'
dataType: 'jsonp'
origin: 'https://www.mediawiki.org'
success: (data, textStatus, jqXHR) ->
    console.log(data)

添加 jsonp 是为我做的事情。我用它替换了格式并从 url 得到了响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2015-06-26
    相关资源
    最近更新 更多