2013-04-04 27 views
2

所以我有一個谷歌縮短的網址,一旦我點擊它,並打我的控制器,我想能夠看到原來的goo.gl網址是什麼解決了。我到底怎麼做到這一點?如何得到原來的谷歌縮短的URL後,它已被解析

我試過Request.UrlReferrer.AboluteUriSystem.Web.HttpContext.Current.Request.Url.AbsoluteUri但似乎都沒有工作。他們都只是返回解決的絕對uri。任何幫助,將不勝感激。

這裏有縮短的URL的一個例子 - 爲localhost http://goo.gl/WSrJ6

這將隨後以用戶(在測試至少):81 /大學/事件/信息/ 23

所以基本上,當我點擊詳細信息控制器,我如何獲得原始縮短的url?

+0

你能提供縮短和原始地址的例子嗎?還有你點擊的鏈接? – 2013-04-04 16:24:54

+0

我已經添加了示例 – 2013-04-04 16:29:56

回答

1

好,這種感覺就像多一個解決辦法,但...

我看不出有什麼辦法來解決從goog.gl服務縮短的URL。但是,您可以向goog.gl發送網絡請求,該請求僅使用HEAD HTTP動詞使用縮短的網址。

然後,在對HEAD請求的響應中,location標題將是原始URL(因爲它將發送重定向請求301)。

您可以使用this tool查看響應。放入縮短的網址,然後在發佈前選擇HEAD動詞。

+0

確實。 Google會向客戶端回覆HTTP 301,因此會向檢索到的長URL發出新請求。 – 2013-04-04 16:43:21

+0

問題是,當我到達控制器時,我不知道縮短的URL是什麼。控制器只知道已解析的長URL。我的問題是,我怎麼知道長URL是直接訪問還是通過縮短版本? – 2013-04-04 16:46:21

+0

@KennySteen我不認爲你可以知道這一點。 goog。gl會用301響應客戶端,然後從客戶端請求將看起來像更長的URL。 – 2013-04-04 16:47:30

0

任何通常被配置瀏覽器發送頭HTTP_REFERER。

不是一個簡單的Request.UrlReferrer工作?或者,像HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]ServerVariables["HTTP_REFERER"]

這取決於你在哪裏編碼,但重點是從請求中獲取頭部。

HTTP_REFERER應該總是包含前一個(referer)url。我不明白爲什麼你會在那裏得到解決的URL,除非它是第二次重定向(例如,你的縮寫指向http://server.com,並且你的web服務器被配置爲將丟失的www重定向到http://www.server.com)。

HTH

舊金山

+0

你正在建議的內容會返回解析後的URL。它不會返回我正在尋找的原始縮短網址。正如我在問題中提到的那樣,我嘗試過'Request.UrlReferrer',但沒有結束。 – 2013-04-04 17:12:36

+0

HTTP_REFERER應該總是包含前一個(引用者)url。我不明白爲什麼你會在那裏得到解析的url,除非它是第二次重定向(例如,你的縮略詞指向'http:// server.com'並且你的web服務器被配置爲將它重定向到'http:// www.server.com')。 – 2013-04-04 17:21:04

+0

我剛剛將我以前的評論添加到答案中。我認爲你不應該看一個工作周,而是看它的原因。檢查我在說關於自動服務器內部重定向。 – 2013-04-04 19:33:20