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
侦听器)并打印所有标头。通过代理将客户端路由到服务器时,您可以确保服务器端的一切正常。
- 1 回答
- 0 关注
- 175 浏览
添加回答
举报
0/150
提交
取消