[英]Rack Middleware in Rack Middleware?
我正在嘗試構建一個使用機架中間件本身(RackWired)的機架中間件GEM 。
我有一個現有的應用程序,其config.ru使用Rack :: Builder。 在該塊(Rack :: Builder)中,我想指定我的中間件,並在調用它時使用自己內部的第三方中間件(rack-cors)做一些事情。 我知道這令人困惑。
問題在於Rack :: Builder的上下文位於config.ru中,因此我的中間件(RackWired)無法訪問它以“使用”第三方中間件(rack-cors)。
我努力的目的就在這里
有沒有辦法在中間件中使用中間件?
謝謝
是的,我不確定您要做什么。 但是你可以做到
class CorsWired
def initialize(app)
@app = app
end
def call(env)
cors = Rack::Cors.new(@app, {}) do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :put, :options, :delete], :credentials => false
end
end
cors.call(env)
end
end
您的config.ru應該use CorsWired
,而不要use CorsWired.new
這是我想您要問的問題,但我想您缺少中間件的要點。 您只需要更改config.ru
,即可在中間件之前/之后使用rack-cors,這取決於您要執行的操作。
require 'rack'
require 'rack/cors'
require './cors_wired'
app = Rack::Builder.new do
use Rack::Cors do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :put, :options, :delete], :credentials => false
end
end
use CorsWired
run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] }
end
run app
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.