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过小,对于未知数据大小的回复,最好尝试把请求头中的这项删除。

  • 相关阅读:
    自考新教材-p173_3(1)
    自考新教材-p148_5(2)
    自考新教材-p148_5(1)
    自考新教材-p148_4
    自考新教材-p147_3
    自考新教材-p146_4(2)
    python 模块 chardet报错解决方法:下载及介绍
    第 52 讲:论一只爬虫的自我修养
    第 51 讲: _name_属性
    Python 培训第一讲
  • 原文地址:https://www.cnblogs.com/mrlonely2018/p/12889705.html
Copyright © 2011-2022 走看看