body-parser 源码分析 (3)

其实本质上来说,charset前端一般都是固定为utf-8的, 甚至在JQuery的AJAX请求中,前端请求charset甚至是不可更改,只能是charset,但是在使用fetch等API的时候,的确是可以更改charset的,这个工作尝试满足一些比较偏僻的更改charset需求。

2. 为什么要对 content-encoding 做处理

一般情况下我们认为,考虑到前端发的AJAX之类的请求的数据量,是不需要做Gzip压缩的。但是向服务器发起请求的不一定只有前端,还可能是Node的客户端。这些Node客户端可能会向Node服务端传送压缩过后的数据流。 例如下面的代码所示:

const zlib = require('zlib'); const request = require('request'); const data = zlib.gzipSync(Buffer.from("我是一个被Gzip压缩后的数据")); request({ method: 'POST', url: 'http://127.0.0.1:3000/post', headers: {//设置请求头 "Content-Type": "text/plain", "Content-Encoding": "gzip" }, body: data }) 6. 参考以及延伸

npm bodyParser

npm iconv-lite 纯JS编码转换器

npm raw-body 以buffer或者string的方式获取一个可读流的全部内容,并且可校验长度

bodyparser实现原理解析(这篇文章回答了我上述2个疑问) https://zhuanlan.zhihu.com/p/78482006

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjwyf.html