zoukankan      html  css  js  c++  java
  • http请求,服务器回复内容为乱码的一种可能解决方法

    使用Fiddler监控手机的网络流量,照抄某一软件的http请求(header和body完全相同),使用nodejs的request发出同样的请求,本来期待获得和Fiddler中看到的一样的JSON数据.

    但却获得了一堆乱码:

    使用gedit打开,尝试各种编码方式,都是乱码。

    使用decrypt.js尝试解码,报错为:Malformed UTF-8 data。

    打印response header后,发现其中'transfer-encoding': 'chunked'这一项在fiddler中并没有

    https://imququ.com/post/transfer-encoding-header-in-http.html

    在这篇transfer-encoding的科普文的最后,发现和gzip有关系。

    最后在这里找到了解决方案(https://stackoverflow.com/questions/12148948/how-do-i-ungzip-decompress-a-nodejs-requests-module-gzip-response-body)

    在header中设置了encoding: null,并把原来header中的 Accept-Encoding 和 Content-Length 删除之后,再也没有出现过乱码的情况。


    另外,如果做了以上修改后,发现服务器对某个node的http请求回复一个404的html,但在Fiddler中可以看到正常JSON数据的话,可以尝试把header中的 Content-Length 删除。这种情况可能是因为实际需要回复给你的数据太大,但你的请求头中的Content-Length过小,对于未知数据大小的回复,最好尝试把请求头中的这项删除。

  • 相关阅读:
    【笔记】DLHLP
    【笔记】DLHLP
    【笔记】DLHLP
    【笔记】DLHLP
    【笔记】PyTorch框架学习 -- 2. 计算图、autograd以及逻辑回归的实现
    【笔记】PyTorch框架学习 -- 1. 张量创建及操作,线性回归的实现
    【安装指南】pytorch相关软件安装
    【笔记】机器学习
    【笔记】机器学习
    【笔记】机器学习
  • 原文地址:https://www.cnblogs.com/mrlonely2018/p/12889705.html
Copyright © 2011-2022 走看看