我有一個基於葡萄的API作爲機架應用程序運行,使用rack-cors來允許跨源請求和Warden進行身份驗證。 CORS正在按預期工作,但在我調用env['warden'].authenticate
的情況下不會。在這些情況下,我得到了「不允許來源」的迴應。在機架應用程序(葡萄API)中使用CORS和守望者
我相信這是由於中間件的順序,但我對機架應用程序來說還是比較新的。 I found some information描述了一個類似的問題,通過使用config.middleware.insert_before Warden::Manager, Rack::Cors do ...
來強制中間件的順序,但是我不知道非Rails等價物,該例子說明了如何在Rails中進行這項工作。
以下是我的config.ru
的簡化近似:
require File.expand_path('../application', __FILE__)
use Warden::Manager do |manager|
manager.default_strategies :password
end
use Rack::Cors do
allow do
origins '*'
resource '/*', :headers => :any, :methods => [:get, :post, :options, :put]
end
end
run application
我試着調換use
指令的順序,但無論哪種方式,我得到同樣的「出身不允許」從使用監獄長方法響應。我的部分問題是,我不清楚什麼決定了機架應用中的中間件的順序。
我的直覺是中間件的順序是否導致這個問題可行?似乎我錯過了一些基本的東西。我想讓機架和監視器玩得很好,或者找到另一種允許CORS的解決方案。我試着明確發送Access-Control-Allow-Origin標題,但Warden似乎也抹去了這一點。