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

vof42yt1  于 2023-02-22  发布在  Postman
关注(0)|答案(3)|浏览(153)

我正在尝试构建一个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之外的每个端口。
为什么会发生这种情况?有没有其他方法来仔细检查它是否工作?谢谢!
注意:我关闭了服务器并再次重新启动它,它的行为仍然相同

voase2hg

voase2hg1#

为了在本地测试CORS,我找到了以下存储库:https://github.com/njgibbon/nicks-cors-test
只需克隆它,然后单击html文件,这样它就可以在浏览器中打开。默认情况下,它调用github APIhttps://api.github.com)并从那里获取信息。您可以打开控制台并检查它。如果您将其更改为https://google.com,它将抛出CORS限制。
类似地,您可以将其更改为http://localhost:3000/api/v1/users(在我的情况下),它将使用我现在的配置抛出CORS错误。
要再次检查,只需转到cors.rb并输入origins "*"。重新启动应用服务器并尝试再次运行html文件。现在我们不会被阻止。

insrf1ej

insrf1ej2#

做一个API调用从浏览器(不是从URL和 Postman )。可能是通过 AJAX 测试。

Postman does not implement the CORS restrictions
w8biq8rn

w8biq8rn3#

我通过添加
宝石'rack-cors',要求:“rack/cors”在添加所需位后工作

相关问题