Sinatra是否支持OPTIONS HTTP動詞?例如:Sinatra選項HTTP動詞
options '/' do
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "POST"
halt 200
end
Sinatra是否支持OPTIONS HTTP動詞?例如:Sinatra選項HTTP動詞
options '/' do
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "POST"
halt 200
end
後位黑客的我設法得到它的工作使用:
before do
if request.request_method == 'OPTIONS'
response.headers["Access-Control-Allow-Origin"] = "*"
response.headers["Access-Control-Allow-Methods"] = "POST"
halt 200
end
end
編輯:
後一些更多的關於這個問題四處尋找,我意識到,PULL請求了上GitHub添加了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
編輯:
拉入請求應合併。不再需要黑客。
不,它不。如果您查看GitHub上的代碼,則可以看到HTTP動詞的定義位置,而options
不是其中的一個。
是的,已經做它Sinatra Routes documentation
答案是,簡單地說,是的! (看下我的路線http://www.sinatrarb.com/intro.html)
如何添加它呢? – 2010-12-04 04:33:51
@KevinSylvestre鑑於現有的路由動詞在Sinatra :: Base上實現爲類方法(請參閱Jergason給出的鏈接),您應該可以定義自己的:def Sinatra :: Base.options(path ,opts = {},&bk); route'OPTIONS',path,opts,&bk end`(未測試)。 – Phrogz 2010-12-05 17:04:43