Sinatra选项HTTP动词

Kev*_*tre 14 sinatra

Sinatra是否支持OPTIONS HTTP动词?就像是:

options '/' do
  response.headers["Access-Control-Allow-Origin"] = "*"
  response.headers["Access-Control-Allow-Methods"] = "POST"

  halt 200
end
Run Code Online (Sandbox Code Playgroud)

Kev*_*tre 28

经过一些黑客攻击后,我设法使用:

before do
  if request.request_method == 'OPTIONS'
    response.headers["Access-Control-Allow-Origin"] = "*"
    response.headers["Access-Control-Allow-Methods"] = "POST"

    halt 200
  end
end
Run Code Online (Sandbox Code Playgroud)

编辑:

在对此问题进行了一些调查之后,我意识到GitHub上有一个PULL请求,用于添加OPTIONS动词(https://github.com/sinatra/sinatra/pull/129).我使用以下代码片段解决了这个问题:

configure do
  class << Sinatra::Base
    def options(path, opts={}, &block)
      route 'OPTIONS', path, opts, &block
    end
  end
  Sinatra::Delegator.delegate :options
end
Run Code Online (Sandbox Code Playgroud)

现在我可以简单地使用:

options '/' do
  ...
end
Run Code Online (Sandbox Code Playgroud)

编辑:

应该合并拉取请求.不再需要黑客攻击.

  • 如果您正在阅读本文,请查看[我的回答](http://stackoverflow.com/a/10195704/316700),现在Sinatra实现了`options` _method_开箱即用. (2认同)

fgu*_*len 6

是的,已经完成了Sinatra Routes文档