Rails:在哪里启用Access-Control-Allow-Origin

Rails: where to enable Access-Control-Allow-Origin

本文关键字:Access-Control-Allow-Origin 启用 在哪里 Rails      更新时间:2023-09-26

我想在我的coffeescript文件中加载一个链接,像这样:

$.ajax hobby.link,
  type: 'GET'
  dataType: 'html'
  error: (jqXHR, textStatus, errorThrown) ->
    console.log "AJAX Error"
  success: (data, textStatus, jqXHR) ->
    console.log "Successful AJAX call"

和已安装

gem 'rack-cors', :require => 'rack/cors'

和添加

config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', :headers => :any, :methods => [:get, :post, :options]
  end
end

到我的应用程序。rb,但每次我得到

XMLHttpRequest无法加载http://www.example.com/。请求的资源上没有'Access-Control-Allow-Origin'标头。因此,不允许访问源'http://localhost:3000'。

我还需要做什么才能使这些加载工作?

请注意,我目前正在对一行中的三个不同链接执行ajax调用。

Rack::Cors处理允许或拒绝您自己的网站和域名的CORS。不能影响其他域的CORS配置。

例如,您的网站可能是http://example.com,并且您试图向http://example.net发送AJAX请求。因为example.net不在您的控制之下,所以您不能控制它的CORS设置,Rack::Cors也不能。这意味着,如果example.net不允许AJAX请求,您将无能为力。

与您试图调用的服务的管理员交谈,看看是否可以说服他们允许AJAX请求(至少来自您的域)。

错误代码表明您试图加载的第三方网站不允许来自自己域外的请求。这不是你的应用程序的问题,它们不允许不是来自它们自己域的请求。

这是针对CSRF攻击的一种措施。