Sinatra选项HTTP动词

时间:2010-12-04 04:15:49

标签: sinatra

Sinatra是否支持OPTIONS HTTP动词?类似的东西:

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

  halt 200
end

4 个答案:

答案 0 :(得分: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

修改

在对此问题进行了一些调查之后,我意识到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

现在我可以简单地使用:

options '/' do
  ...
end

修改

应该合并拉取请求。不再需要黑客了。

答案 1 :(得分:6)

是的,已经完成Sinatra Routes documentation

答案 2 :(得分:2)

不,不。如果查看GitHub上的代码,您可以看到HTTP谓词的定义位置,options不是其中之一。

答案 3 :(得分:0)

答案是,简单,是的! (请阅读“阅读我http://www.sinatrarb.com/intro.html中的路线”