2

所以我有一个谷歌缩短的网址,一旦我点击它并点击我的控制器,我希望能够在它得到解决之前看到原始的 goo.gl 网址是什么。我到底该怎么做?

我试过了Request.UrlReferrer.AboluteUriSystem.Web.HttpContext.Current.Request.Url.AbsoluteUri但似乎都没有。它们都简单地返回解析的绝对 uri。对此的任何帮助将不胜感激。

这是缩短 URL 的示例 - http://goo.gl/WSrJ6

然后,这会将用户(至少在测试中)带到 localhost:81/college/events/details/23

所以基本上,当我点击 Details Controller 时,如何取回原始缩短的 url?

4

3 回答 3

2

好的,这感觉更像是一种解决方法,但是......

我看不到任何方法可以从 goog.gl 服务中解析缩短的 url。但是,您可以向 goog.gl 发送一个 Web 请求,该请求仅使用HEADHTTP 动词,使用缩短的 url。

然后,在对HEAD请求的响应中,location标头将是原始 url(因为它会发回重定向请求 301)。

您可以使用此工具查看响应。输入您的缩短网址,然后HEAD在发布前选择动词。

于 2013-04-04T16:34:46.043 回答
1

https://developers.google.com/url-shortener/v1/getting_started

您使用以下 url 执行获取请求,并获得带有长 url 的 Json

https://www.googleapis.com/urlshortener/v1/url?shortUrl=http://goo.gl/WSrJ6

于 2013-04-04T16:36:14.547 回答
0

任何正常配置的浏览器都会发送标头 HTTP_REFERER。

不简单的Request.UrlReferrer工作吗?或者,像HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]or之类的东西ServerVariables["HTTP_REFERER"]

这取决于您在哪里编码,但关键是从请求中获取标头。

HTTP_REFERER 应始终包含以前的(引用)url。我不明白为什么你会在那里得到解析的 url,除非它是第二次重定向(例如你的缩短器指向http://server.com并且你的网络服务器被配置为重定向丢失wwwhttp://www.server.com)。

高温高压

弗朗西斯科

于 2013-04-04T17:04:23.967 回答