所以我有一个谷歌缩短的网址,一旦我点击它并点击我的控制器,我希望能够在解决之前看到原始的goo.gl网址是什么。我该怎么做呢?
我已尝试Request.UrlReferrer.AboluteUri
和System.Web.HttpContext.Current.Request.Url.AbsoluteUri
,但似乎都没有效果。他们都只是返回已解决的绝对uri。对此的任何帮助将不胜感激。
以下是缩短网址的示例 - http://goo.gl/WSrJ6
这将使用户(至少在测试中)到localhost:81 / college / events / details / 23
所以基本上,当我点击详细控制器时,我如何获得原来缩短的网址?
答案 0 :(得分:1)
好的,这感觉更像是一种解决方法,但是......
我认为没有办法从goog.gl服务中解析缩短的网址。但是,您可以向goog.gl发送仅使用缩短网址的HEAD
HTTP动词的网络请求。
然后,在对HEAD
请求的响应中,location
标头将是原始网址(因为它将发回重定向请求301)。
您可以使用this tool查看回复。放入缩短的网址,然后在发布前选择HEAD
动词。
答案 1 :(得分:1)
https://developers.google.com/url-shortener/v1/getting_started
您使用以下网址发送获取请求,并获得带有长网址的Json
https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/WSrJ6
答案 2 :(得分:0)
任何正常配置的浏览器都会发送标头HTTP_REFERER。
不是简单的Request.UrlReferrer
工作吗?或者,例如HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
或ServerVariables["HTTP_REFERER"]
?
这取决于您编码的位置,但重点是从请求中获取标题。
HTTP_REFERER应始终包含上一个(referer)网址。我不知道为什么你会在那里获得已解决的网址,除非它是第二次重定向(例如你的缩短程序指向http://server.com
并且你的网络服务器配置为重定向丢失{{1到www
)。
HTH
旧金山