2011-08-08 80 views
0

我要創建的控制器來實現在圖中所示的波紋管的行爲:代理每個請求的網站,並返回結果

enter image description here

有人可以提供一個例子,如果這是可能的嗎?

編輯:只是通過網站B.使用Facebook的SDK中的所有請求後從站點A在Facebook(網站C)想代理如果

發現這個代碼的幫助:

def default 
    result = Net::HTTP.get_response(
     "realserver.internal.net", 
     @request.env["REQUEST_URI"] 
     ) 
    #render error if result. ... 
    render_text result.body 
    end 
end 

回答

0

它看起來你試圖隱藏請求的去向,或者繞過瀏覽器的csrf保護。如果是前者,您可能希望限制可從站點C請求的URL,因爲您可能通過Internet公開站點C的所有Intranet頁面。如果是後者,你認爲是JSONP還是CORS?這對用戶來說會更快,並且通過站點B的流量更少。

請注意,使用您在圖表中繪製的方法將站點C的內容呈現爲屬於站點B,並具有所有安全性以及這引起的法律問題。

如果您仍然想這樣做你所描述的方式,如果你能保持相同的路徑,查詢字符串和站點B和站點C的片段ID,您上面的例子中是可行的。

而且,不指@request,使用請求。 request.fullpath來代替@ request.env [「REQUEST_URI」]

編輯的使用:此外,復仇者是正確的,反向代理也將正常工作。優點:更快,更少的代碼。缺點:不能以編程方式確定是否接受請求,向請求添加動態變量等。對於Facebook的事情,它可能會起作用。

+0

只是想通過代理網站B.使用Facebook的SDK中的所有'POST'請求​​從站點A在Facebook(網站C) – glarkou

1

看起來你不需要導軌在這裏所有。你想要的是一個反向代理(這裏有很多選擇)。我會建議nginx

相關問題