ruby - Sinatra 中的 Cors 定义

标签 ruby http cors sinatra

我正在使用 Ruby 和 Sinatra 构建一个简单的应用程序,并正在寻找示例 CORS 配置,我发现了这个:

before do
  headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, DELETE, OPTIONS'
  headers['Access-Control-Allow-Origin'] = '*'
  headers['Access-Control-Allow-Headers'] = 'Accept, Authorization, Origin'
end

options '*' do
  response.headers['Allow'] = 'HEAD, GET, PUT, DELETE, OPTIONS, POST'
  response.headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Cache-Control, Accept'
end

它工作正常,但我想了解更多细节。 options Access-Control-Allow-Headersbefore block 中的其他选项不同。 我想知道他们是否引用了 options 本身或者背后有什么原因?我不确定它们是否应该相同。

最佳答案

options block 主要用作 Preflight request 。它在实际发出实际的 HTTP 请求之前告诉客户端允许使用哪些 header /方法。

对于before block ,我相信你只需要设置Allow Origin,除非你对不同的端点使用不同的配置。

关于ruby - Sinatra 中的 Cors 定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59599530/

相关文章:

json - 了解 REST 响应和 HTTP 状态码

cors - 尽管响应也有 Vary : Origin,但带有 ETag header 的 Access-Control-Allow-Origin 响应似乎已被缓存

javascript - 有没有办法在不访问后端的情况下处理 CORS?

ruby - ruby 中的尾递归——这两种实现有什么区别?

ruby - 雷神 : How can I get my Thor task to display help when I have defined an argument?

ruby - 正确的 Assert_Raise 单元测试和异常类的使用

ruby-on-rails - 在 ruby​​ 中编写 if 条件的更好方法

http - 在 Apache Cassandra 中存储和显示图像文件

Android如何发出http请求以获取ImageView的图像链接

python - Django (DRF) 不显示 CORS POST 数据(来自 React 前端)