Closed owwkmidream closed 1 month ago
补充:在此最小示例里,dump可以看见多出来的Accept-Encoding: gzip,但是我的实际项目里面dump看不见,我已经尽量复现但是复现不出来
如图 Dump
2024/05/22 20:47:36.524953 DEBUG [req] HTTP/1.1 POST https://httpbin.org/post
POST /post HTTP/1.1
Content-Type: application/json
User-Agent: my-ua
My-Headers: 1.30
charset: UTF-8
Content-Encoding: deflate
Content-Length: 17
Host: httpbin.org
最小复现示例:
package main
import (
"fmt"
"github.com/imroc/req/v3"
"strconv"
)
func main() {
cli := req.DevMode().EnableForceHTTP1()
// 中间件
cli.OnBeforeRequest(func(client *req.Client, req *req.Request) error {
fmt.Println("请求头:")
for k, v := range req.Headers {
fmt.Printf("%s: %s\n", k, v)
}
return nil // return nil if it is success
})
// 代理抓包地址
cli.SetProxyURL("http://127.0.0.1:9000")
var headers = map[string]string{
"Content-Type": "application/json",
"User-Agent": "my-ua",
"charset": "UTF-8",
"My-Headers": "hello",
"Content-Encoding": "deflate",
"Content-Length": "",
"Host": "httpbin.org",
}
var data = []byte(`{"hello":"world"}`)
headers["User-Agent"] = "new-my-ua"
headers["Content-Length"] = strconv.Itoa(len(data))
var resp map[string]interface{}
reqs := cli.Post("https://httpbin.org/post").
SetHeaderOrder(
"Content-Type",
"User-Agent",
"charset",
"My-Headers",
"Content-Encoding",
"Content-Length",
"Host",
)
for k, v := range headers {
reqs.SetHeaderNonCanonical(k, v)
}
reqs.SetBodyBytes(data).
SetSuccessResult(&resp).
Do()
for k, v := range resp["headers"].(map[string]interface{}) {
fmt.Println(k, v)
}
}
DevMode dump 出来的是可以看到的,我用你的代码都可以
DevMode dump 出来的是可以看到的,我用你的代码都可以
是的,我复现不出来,项目里dump的信息,header后没有跟着一个空行直接就是body了,也看不见这个多出来的Accept-Encoding: gzip。
由于客户端指纹的问题,我希望header仅出现我指定的字段,这个有办法实现吗
我希望header仅出现我指定的字段,这个有办法实现吗
暂时没有这个能力,但是如果想不自动加 Accept-Encoding
可以这样设置下:
client.DisableCompression()
我希望header仅出现我指定的字段,这个有办法实现吗
暂时没有这个能力,但是如果想不自动加
Accept-Encoding
可以这样设置下:client.DisableCompression()
okk,暂时解决了,感谢。不过现在有了header order,也希望未来能够增加header仅出现指定字段的能力!!
在OnBeforeRequest中间件和DevMode dump出来的信息,都没有发现多余的header,但是使用抓包软件就看见每次都自己添加了一个 Accept-Encoding: gzip
由于客户端指纹的问题,我希望header仅出现我指定的字段,并且进行自定义排序,这个多出的Accept-Encoding: gzip破坏了指纹。