如何响应 rails-api 中的 OPTIONS HTTP 方法?

Posted

技术标签:

【中文标题】如何响应 rails-api 中的 OPTIONS HTTP 方法?【英文标题】:How to respond to OPTIONS HTTP Method in rails-api? 【发布时间】:2013-11-29 12:36:31 【问题描述】:

我正在使用 rails-api 构建一个公共的 json api。

我想响应 OPTIONS HTTP 方法以利用跨域资源共享。

http://www.w3.org/TR/cors/

我正在这样做:

headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, OPTIONS'

它可以工作,但某些 URL 不支持所有 HTTP 方法。在这些情况下,我在撒谎。

我不想为每个 URL 配置 Access-Control-Allow-Methods。

有没有办法根据我的路线响应 Access-Control-Allow-Methods?

【问题讨论】:

【参考方案1】:

查看 rack-cors gem,它允许您像路由文件一样配置它

https://github.com/cyu/rack-cors

【讨论】:

rack-cors 非常好,但它不是基于我的路线。如果我的路线以 200 响应 GET /list 并以 404 响应 POST /list,那么我希望它以 Access-Control-Allow-Method: GET, OPTIONS only 响应 OPTIONS。 Rack-cors 可以做到这一点,但我必须进行配置。我不想再次配置它,因为我已经在路由文件上进行了配置。不过我会接受你的回答,因为我认为现在这样更好。

以上是关于如何响应 rails-api 中的 OPTIONS HTTP 方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Rails-Api + Vue.js + Cloudinary + Attachinary 上传图片?

为RSpec和Rails-API设置Content-Type标头

覆盖 NancyFX / Visual Studio Web 服务器中的 OPTIONS 响应

如何响应 HTTP OPTIONS 请求?

http响应头中的X-Frame-Options防止被frame

如何使用 Capybara 测试 OPTIONS 请求?