登录
首页 >  Golang >  Go问答

如何在golang中获取重定向url而不是页面内容?

来源:Golang技术栈

时间:2023-04-12 19:20:37 208浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《如何在golang中获取重定向url而不是页面内容?》主要内容涉及到golang等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

我正在向服务器发送请求,但它正在返回一个网页。有没有办法获取网页的网址?

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "https://www.google.com", nil)
    if err != nil {
        panic(err)
    }

    client := new(http.Client)
    response, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    fmt.Println(ioutil.ReadAll(response.Body))
}

正确答案

您需要检查重定向并停止(捕获)它们。如果您捕获重定向,那么您可以使用响应结构的 location 方法获取重定向 URL(正在发生重定向)。

package main

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

func main() {
    req, err := http.NewRequest("GET", "https://www.google.com", nil)
    if err != nil {
        panic(err)
    }
    client := new(http.Client)
    client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
        return errors.New("Redirect")
    }

    response, err := client.Do(req)
    if err == nil {
        if response.StatusCode == http.StatusFound { //status code 302
            fmt.Println(response.Location())
        }
    } else {
        panic(err)
    }

}

今天关于《如何在golang中获取重定向url而不是页面内容?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>