为了账号安全,请及时绑定邮箱和手机立即绑定

转到重定向和代理上的 http.Request 标头

转到重定向和代理上的 http.Request 标头

Go
当年话下 2021-08-30 17:29:26
https://groups.google.com/forum/#!topic/golang-nuts/OwGvopYXpwE正如在这个线程中看到的,当http.Client发送请求到重定向时,标头会被重置。有一种解决方法,例如:client.CheckRedirect = func(req *http.Request, via []*http.Request) error {    if len(via) >= 10 {        return fmt.Errorf("too many redirects")    }    if len(via) == 0 {        return nil    }    for attr, val := range via[0].Header {        if _, ok := req.Header[attr]; !ok {            req.Header[attr] = val        }    }    return nil}但我的问题是,如果我想通过我的代理服务器 http 请求,我该怎么做。当 http 请求通过代理服务器时,标头是否全部重置?我是否必须http.Client在代理中设置另一个?我使用https://github.com/elazarl/goproxy设置了我的代理服务器谢谢,
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

我简要地查看了代码,看起来 goproxy 没有以任何特殊方式处理 3XX 响应——它们只是被路由回您的客户端,因此它可以做出相应的反应。在您的情况下,您将使用所有标头集发出另一个请求。

如果这不是您关心的问题,并且您只是想知道代理的存在是否需要在客户端进行任何黑客攻击,那么不,http.Client在使用代理时不会删除任何标头,它甚至不知道涉及代理.

您可以通过设置您自己的简单服务器(例如在 Go 中)来轻松测试这些假设,该服务器返回重定向响应(向其自身或某些nc侦听器)并打印所有标头。通过代理将客户端路由到服务器时,您可以确保服务器端的一切正常。


查看完整回答
反对 回复 2021-08-30
  • 1 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信