【发布时间】:2010-12-04 04:15:49
【问题描述】:
Sinatra 是否支持 OPTIONS HTTP 动词?比如:
options '/' do
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "POST"
halt 200
end
【问题讨论】:
标签: sinatra
Sinatra 是否支持 OPTIONS HTTP 动词?比如:
options '/' do
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "POST"
halt 200
end
【问题讨论】:
标签: sinatra
经过一番修改后,我设法让它工作:
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)。我采用了解决方案并使用以下 sn-p 破解了它:
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
编辑:
拉取请求应该被合并。不再需要破解。
【讨论】:
options 方法。
是的,已经做到了Sinatra Routes documentation
【讨论】:
不,它没有。如果您查看 GitHub 上的代码,您可以看到 HTTP 动词的定义位置,而 options 不是其中之一。
【讨论】:
def Sinatra::Base.options(path,opts={},&bk); route 'OPTIONS', path, opts, &bk end (未经测试)。
答案很简单,是的! (在自述文件中的路线下方查看http://www.sinatrarb.com/intro.html)
【讨论】: