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

问题描述 投票:0回答:4

我正在尝试构建一个 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
之外,所有端口都应该被阻止。

为什么会这样?还有其他方法可以再次检查它是否有效吗?谢谢!

注意:我杀死了服务器并再次重新启动它,它的行为仍然相同

ruby-on-rails api postman rails-api rack-cors
4个回答
3
投票

为了在本地测试 CORS,我找到了这个存储库: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 错误。

要仔细检查,只需转到

cors.rb
并输入
origins "*"
。重新启动应用程序服务器并尝试再次运行 html 文件。现在我们不会被阻止了。


1
投票

从浏览器进行 API 调用(不是从 URL 也不是从邮递员)。可能是通过ajax来测试的。

Postman does not implement the CORS restrictions

1
投票

刚刚通过添加解决了它
gem 'rack-cors',要求:'rack/cors' 添加要求位后它起作用了


0
投票

试试这个

curl -I -X OPTIONS \
  -H "Origin: https://ORIGIN.com" \
  -H 'Access-Control-Request-Method: POST' \
  "https://URL_YOU_WANT_TO_TEST" 2>&1 | grep -i 'Access-Control-Allow-Origin'

如果有任何 URL 返回,则说明有效。

© www.soinside.com 2019 - 2024. All rights reserved.