You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// index.jsfunctioninflate(stream,options){if(!stream){thrownewTypeError('argument stream is required')}options=options||{}varencoding=options.encoding||(stream.headers&&stream.headers['content-encoding'])||'identity'switch(encoding){case'gzip':
case'deflate':
breakcase'identity':
returnstreamdefault:
varerr=newError('Unsupported Content-Encoding: '+encoding)err.status=415throwerr}// no not pass-through encodingdeleteoptions.encodingreturnstream.pipe(zlib.Unzip(options))}
http一些头信息
Content-Type • 实体中所承载对象的类型。
Content-Length • 所传送实体主体的长度或大小。
Content-Language • 与所传送对象最相配的人类语言。
Content-Encoding • 对象数据所做的任意变换(比如,压缩) 。
http请求是有headers和实体组成的,
CRLF
【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】之后就是实体。文本的字符编码(之后讨论)
Content-Type: text/html; charset=iso-8859-4
多部分表格提交
multipart/form-data
看一下请求体
application/x-www-form-urlencoded
看下请求体
text/plain
看下请求体
可以用node接收一下
可以细节的观察到有两个0d 0a(回车换行)
内容编码的类型
Content-Encoding 首部就用这些标准化的代号来说明编码时使用的算法
有这些稍微基础的原理,就可以分析源码学web了,看看是怎么解析数据,可以友好的使用这些值。
分析 koa-body 这个中间件
核心代码:
核心的解析逻辑又在 co-body 这个包里面
看一下co-body的代码
解析核心代码
inflate只是根据 content-encoding 解压返回一个stream,raw 是 raw-body的包(嘿嘿)
就这些吧,还有MultiPart和字符知识的没有写,这个库也涉及了,学习要 有的放矢,👋再见。
The text was updated successfully, but these errors were encountered: