当前位置: 首页 > 面试题库 >

在golang中,如何在一系列重定向后确定最终的URL?

滕无尘
2023-03-14
问题内容

因此,我正在使用net / http包。我正在获取一个我肯定知道要重定向的URL。在到达最终网址之前,它甚至可能重定向了几次。重定向在后台自动处理。

有没有一种简单的方法来确定最终的URL是什么,而没有涉及在http.Client对象上设置CheckRedirect字段的棘手的解决方法?

我想我应该提一提我想出了一种解决方法,但这有点of脚,因为它涉及使用全局变量并在自定义http.Client上设置CheckRedirect字段。

必须有一种更清洁的方式来做到这一点。我希望这样的事情:

package main

import (
  "fmt"
  "log"
  "net/http"
)

func main() {
  // Try to GET some URL that redirects.  Could be 5 or 6 unseen redirections here.
  resp, err := http.Get("http://some-server.com/a/url/that/redirects.html")
  if err != nil {
    log.Fatalf("http.Get => %v", err.Error())
  }

  // Find out what URL we ended up at
  finalURL := magicFunctionThatTellsMeTheFinalURL(resp)

  fmt.Printf("The URL you ended up at is: %v", finalURL)
}

问题答案:
package main

import (
    "fmt"
    "log"
    "net/http"
)

func main() {
    resp, err := http.Get("http://stackoverflow.com/q/16784419/727643")
    if err != nil {
        log.Fatalf("http.Get => %v", err.Error())
    }

    // Your magic function. The Request in the Response is the last URL the
    // client tried to access.
    finalURL := resp.Request.URL.String()

    fmt.Printf("The URL you ended up at is: %v\n", finalURL)
}

输出:

The URL you ended up at is: http://stackoverflow.com/questions/16784419/in-golang-how-to-determine-the-final-url-after-a-series-of-redirects


 类似资料:
  • 问题内容: 我想做的是 找出重定向之后的最后一个/最终URL是什么 。 我不希望使用cURL。 我想坚持使用纯PHP(流包装器)。 现在,我有一个URL(比如说http://domain.test),并且我使用get_headers()从该页面获取特定的标题。get_headers也将返回多个标题(请参见下面的 Edit )。有没有办法使用这些标头来构建最终URL?还是有一个PHP函数可以自动执行

  • 可以按如下方式创建遵循重定向的客户端: 调用URL上的头请求后,如何检索最终的位置头?换句话说,我们如何将最终URL重定向到?

  • 问题内容: 在页面重定向(最好使用curl或wget)之后,我需要获取最终的URL。 例如, http://google.com 可以重定向到 http://www.google.com 。 内容很容易获得(例如),但是我只对最终URL(在前一种情况下为http://www.google.com)感兴趣。 仅使用Linux内置工具有什么方法可以做到这一点?(仅命令行) 问题答案: 的选项和sub变

  • 我有多条带有评论的路线,当我单击“回复”时,我会被重定向到一条路线,在那里我可以发布对评论的回复。我如何正确地存储来自我所在地的路线,然后在发布回复后重定向回该路线? 我考虑将URL::previous作为参数传递,并将其存储到隐藏的输入中,但如果用户刷新页面,它将变为空。另一种方法可能是存储在会话中,但我不知道如何可靠地使其过期。。。

  • 我有一张表,上面的数据是从到。 我需要确定列中包含数据的最后一行(它都是连续的-数据/行中没有空隙)。 其他列中的数据行数也比列多,因此我只需要隔离列。(和/或只是列内的一个范围)。 我可以在电子表格级别使用 然而,在我对谷歌应用脚本解决方案的所有研究中,我似乎只发现需要执行包含几十行代码的多种功能——包括大量的内容...我可以通过直接从中抵消来做到这一点。 是否可能有特定于列的方法来修改此方法?

  • 问题内容: 我正在nodejs / expressjs中构建购物车应用程序。在用户登录后重定向到正确的页面时,我遇到了一些问题。我发现有几篇文章密切相关,但是我从给定的文章中进行修复的所有尝试都没有成功。 发生的情况是,用户输入其登录信息,然后单击登录按钮。Ajax请求将数据发送到此访问功能。该功能首先检查用户是否存在于数据库中。如果是,那么它将继续比较bcrypt密码,如果它们相等,则它们成功登