2015-04-16 20 views
1

我用下面的代碼,以請求,並按照重定向:法拉第中間件知道什麼事情被重定向

require 'faraday' 
require 'faraday_middleware' 
conn = Faraday.new() do |f| 
    f.use FaradayMiddleware::FollowRedirects, limit: 5 
    f.adapter Faraday.default_adapter 
end 
resp = conn.get('http://www.example.com/redirect') 
resp.status 

代碼輸出200,因爲它遵循重定向,這是偉大的。但無論如何要知道重定向是否存在?如resp.redirected,如果遵循重定向,則設置爲true;如果沒有遵循重定向,則設置爲false?

我在FollowRedirects的代碼中沒有看到任何明顯的東西。

如果我想知道這個,我是否需要編寫自己的自定義中間件?有沒有人知道那裏的中間件可能會這樣做?

+1

檢查Typhoeus https://github.com/typhoeus/typhoeus,搜索followlocation。我不知道它是否做到了你想要的,但它可能。 :-)你可能想運行一個調試器並檢查任何提示的響應對象。 – Ollie

+0

謝謝!我認爲我擁有的代碼正確地遵循重定向。我感興趣的是知道何時遵循重定向。我想我需要將結果網址與原始網址進行比較,看看它們是否相同。我只是不知道Faraday響應中是否有最終的url。 –

+1

我知道,我只是想知道它是否有一些輔助方法來告訴你它是否被重定向。 :-) – Ollie

回答

0

其實,我覺得我只是發現基於此職位的答案:https://stackoverflow.com/a/20818142/4701287

我需要比較原始URL我經過與結果URL。從上面擴展我的示例:

original_url = 'http://www.example.com/redirect' 
resp = conn.get(original_url) 
was_redirected = (original_url == resp.to_hash[:url].to_s) 
相關問題