redirect - 重定向太多,但通过什么路由?

标签 redirect go

我有一个基于 goquery 的简单网络抓取工具/蜘蛛,它又使用 net/http。效果很好,直到我访问了一个重定向过多的网站。

Get http://www.example.com/some/path.html: stopped after 10 redirects

但是为什么?它是否重定向到自身?它把我扔进了蜘蛛 jail 吗?我想知道我被重定向到什么 url,以及以什么顺序。

给出错误的函数似乎知道这一点,因为它正在检查一段请求的长度,但我真的不想自己编辑 net/http 包。

这是来自 http://golang.org/src/pkg/net/http/client.go 的函数

func defaultCheckRedirect(req *Request, via []*Request) error {
    if len(via) >= 10 {
        return errors.New("stopped after 10 redirects")
    }
    return nil
}

最佳答案

您可以将自己的函数传递给http.Client,例如:

client := &http.Client{
    CheckRedirect: func(req *Request, via []*Request) error {
        log.Println("redirect", req.URL)
        if len(via) >= 10 {
            return errors.New("stopped after 10 redirects")
        }
        return nil
    },
}

关于redirect - 重定向太多,但通过什么路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25312385/

相关文章:

.htaccess - 想要将域重定向到子文件夹中的博客,直到完整站点启动

go - map 检索的值(value)

string - 在 GoLang 中打印“(双引号)

go - GCC-Go - 针对特定架构优化构建

sockets - 去写套接字 - 无效参数

asp.net - 域名变更后301重定向

javascript - 如何通过仅附加哈希来重新加载浏览器页面?

c# - 重定向到完整域

php - 重定向回 Laravel 中的特定选项卡 Pane

go - 有没有办法重用 fmt.Printf 中的参数?