node访问接口,得到乱码的结果,原因-Accept-Encoding
# 现状
node访问接口,设置了headers头部, 得到乱码的结果
headers: {
Host: "xxx.com",
Connection: "keep-alive",
Accept: "*/*",
Cookie: "install_id=91648520549; ttreq=1$780a8fc58fe4b8d415be0af900355bfda5b55fcb; d_ticket=0c335ce549098e426120341e1f5d33a8ec2e1; odin_tt=ef8cf61222b33aa8ea17fbd98d583afbc5d9dfea6d8312d355e4ff824caeafba92a4e9da6196fbd246a3365232fb29aa",
"Content-type": 'application/json; charset=utf-8',
"Accept-Encoding": "gzip, deflate",
"x-tt-token":"000c2f72735ade685f370d832c3ea4d2549d057cbeb7b24350b15572702d25077074f2540c27f20a6cca49dab3b899cc6135",
"x-tt-trace-id": "00-2bf9d1b523bb14393a86df70063862db-2bf9d1b523bb1439-01",
"x-ss-dp": "1128",
"user-Agent": "Aweme 8.3.1 rv:83101 (iPhone; iOS 10.2; zh_CN) Cronet",
"x-gorgon": "830000000000e489e4ebb28e071f1455c00e85d18b496702ae36",
"x-khronos": "1573111585",
"sdk-version": "1"
},
# 分析原因
- 在postman中访问可以得到正确的json对象
- 因为需要加头部信息所以不能用浏览器测试
~ 大概率问题是出现在头部上
# 解决问题
- 在网上找找原因
- 删除部分头部字段,分析结果
最后通过删除Accept-Encoding 得到了正确的结果
# 为什么呢
那是因为,浏览器对于从服务器中返回的对应的gzip压缩的网页,会自动解压缩,所以,其request的时候,添加对应的头,表明自己接受压缩后的数据。 而我们在node中访问, 如果增加了这个反而出现问题,无法解释压缩后的数据,node需要的直接的json对象。 postman估计也做了解压处理,所以能正常。
# 总结
还是对头部字段认识程度不够,只能搬来搬去,而不能从根本上理解,这方面需要加强。
上次更新: 2021/12/19, 18:05:42