Rails 7 从 cdn 导入带有 javascript 包的地图,抛出 CORS 错误

Jam*_*mes 8 javascript ruby-on-rails import-maps ruby-on-rails-7

我正在尝试使用新的 Rails 7 导入映射功能导入托管在 CDN 上的 JS 包。然而,每当我的 Rails 项目加载时,我都会收到CORS以下形式的相关错误:

Access to script at 'https://cdn.vender-application.com/package.js' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)

我的importmap.rb看起来像这样:

pin "va_cdn", to: "https://cdn.vender-application.com/package.js"
Run Code Online (Sandbox Code Playgroud)

我将rack-corsgem 与cors.rb文件一起添加,但没有效果。cors 文件示例:

  • 我首先尝试与将军config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', headers: :any, methods: :any
  end
end
Run Code Online (Sandbox Code Playgroud)
  • 失败之后,我尝试更具体,因为我听说有些服务不喜欢*起源。我使用http://127.0.0.1:3000的是错误消息中列出的确切来源。我尝试了两种方法resource '*'和一种更具体的方法:
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins 'http://127.0.0.1:3000'
    resource '/', headers: :any, methods: :any
    resource '/index', headers: :any, methods: :any
  end
end
Run Code Online (Sandbox Code Playgroud)

我似乎是 importmaps 特有的东西,因为此代码将成功获取包:

<% content_for :head do %>
  <%= javascript_include_tag "https://cdn.vender-application.com/package.js" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我更愿意使用新推荐的方式来获取此包,而不是内联调用。