如何测试 Rails rack-cors gem 是否正常工作

How to test if Rails rack-cors gem is working

我正在尝试构建一个 React - Rails API 项目。我添加了 gem 'rack-cors' 并创建了 config/initializers/cors.rb 文件:

Rails.application.config.middleware.insert_before 0, Rack::Cors do
    allow do
      origins "http://localhost:3001" 
      # The React part will be on port 3001 so thats way we add it
      # Change it to the production url when going on production
  
      resource "*",
        headers: :any,
        methods: [:get, :post, :put, :patch, :delete, :options, :head]
    end
end

我只想允许 3001 端口,因为那是我的 React 前端服务的端口。 现在我想测试这是否真的有效并阻止其他请求。

到目前为止,我一直在使用 Postman 来测试 API(必须下载它才能与 http 一起使用)。我认为因为我只将过滤器添加到特定端口,它会阻止来自 Postman 的请求,但它仍然显示 API 调用中请求的数据。

此外,如果我尝试在浏览器上这样访问它:

http://localhost:3000/api/v1/users

它仍在提供数据,应该阻止除 3001 之外的所有端口。

为什么会这样?有没有其他方法可以仔细检查它是否有效?谢谢!

注意:我关闭了服务器并重新启动它,它仍然表现相同

从浏览器发起 API 调用(不是来自 URL 也不是来自邮递员)。可能会通过ajax来测试。

Postman does not implement the CORS restrictions

为了在本地测试 CORS,我找到了这个 repo:https://github.com/njgibbon/nicks-cors-test

只需克隆它,然后单击 html 文件即可在浏览器中打开它。默认情况下,它调用 github API (https://api.github.com) 并从那里获取信息。您可以打开控制台并检查它。 如果将其更改为 https://google.com,它将引发 CORS 限制。

同样,您可以将其更改为 http://localhost:3000/api/v1/users(在我的例子中),它会在我现在的配置中抛出 CORS 错误。

到double-check,直接去cors.rb,放origins "*"。重新启动应用程序服务器并再次尝试 运行 html 文件。现在我们不会被阻止了。