2016-12-02 87 views
1

嗨我想找到一種方法來獲取重定向的網頁的URL。前/我在我的網絡瀏覽器中輸入「http:foo.com」,然後將我重定向到「http://foo.com/bar」。JS - 如何獲取重定向的URL

我該如何使用抓取或其他方法讓「http://foo.com/bar」返回給我? (我試圖接收網址的網站「已被CORS策略阻止:否請求的資源上存在'Access-Control-Allow-Origin'標頭。」

請提前致謝/解決方案。

回答

0

你不能。XMLHttpRequestfetch默默地進行重定向,並沒有最終URL的相關信息是在事後的對象可用。

即使這些信息是可用,Same Origin Policy會阻止你訪問它(如the error message indicates


改爲使用服務器端技術。

+0

你能推薦一個服務器端技術嗎?我實際上正在嘗試在seneca.js微服務中做到這一點。對不起如果我應該進一步解釋。 – KMongiello

+0

您可以使用Fetch將'redirect'設置爲不同的處理方式。 https://fetch.spec.whatwg.org/#requestredirect成功響應後,您還可以通過檢查響應對象來確定最終URL的內容。 – Brad

+0

如果您是在Node.js的Seneca上執行此操作,那麼您將不會觸發CORS錯誤消息,這是瀏覽器特定的錯誤。你應該可以使用Node來做到這一點。 – Quentin

-1

關於「http://foo.com/bar」你想得到當前的URL,「http://foo.com/bar」是嗎?如果是這樣,與JavaScript中使用:

alert(location.href); 

但是,如果你想獲得先前的URL「http://foo.com/」(轉診,重定向之前),那麼你就需要使用服務器端語言。

或者,您可以防止使用服務器站點語言,如果你改變你的重定向方法包括在查詢字符串後面的網址,從「http://foo.com/」重定向到「http://foo.com/bar?back=http%3A%2F%2Ffoo.com%2F」,並使用像https://stackoverflow.com/a/901144/271433東西拿到後面的參數和解碼

+0

謝謝你的努力,但這不是我所問的。抱歉太過於模糊。我試圖通過http請求獲取來自第三方網站的重定向網址。我能夠通過服務器端輕鬆實現它。 – KMongiello

+0

啊,是的,這將是服務器端,但請注意,有時防火牆可能會剝奪引薦標題。你也應該處理。 –