您现在所在位置: 首页 > 睿道新闻

python培训之什么是Content-Length头?

发布时间:2020-09-15点击数:


  今天,我们的python培训讲的是不完整的Http阅读和python中Requests库中的彩蛋。请求库可以说是Python中使用最广泛的HTTP库。然而,大多数用户可能不知道当前稳定版本的请求接受长度小于内容长度头所给长度的响应。如果你不仔细检查,你可能会无意中使用损坏的数据。我不知道现在告诉你这些是不是一个鸡蛋。为了避免同样的问题,我写了这篇文章告诉大家。今天,让我们看看为什么当前的请求版本不做这个检查,以及如何在您的脚本中手动检查它。


  在正式开始这篇文章的介绍之前,先给大家一个彩蛋:如果你懂python,基本玩过爬虫,玩爬虫的时候肯定会用到requests库。这个图书馆的作者是著名的肯尼迪·雷伊茨。非常强大的网站,发现他有了新的举动,变成了一个爬虫下载器和解析器相结合的库。这个库直接内置html页面解析,相当于自带酒水。非常方便,号称是一个供人类使用的网页解析库。我们只需要用pip直接安装即可。Pipinstallrequests-html,这个库有内置的请求库,pyquery库,bs库和一些编码库。最好的是可以集成随机代理库伪用户代理。如果您想了解更多关于请求库的信息,请咨询东软瑞道python培训机构!接下来,让我们看看今天的关键知识:


  什么是内容长度标题?


  在HTTP协议中,内容长度头描述了请求或响应主体的长度。它以8位字节给出,其中一个8位字节是8位。为简单起见,我将在本文中使用术语字节而不是8位字节。一般来说,内容长度报头用于在当前请求(或响应)完成时通知接收者。没有它,你不知道你是否收到了所有的数据,或者你是否有更多的数据要读。当然,服务器可以在每个请求或响应结束时断开连接(HTTP1.0就是这种情况),但是当涉及到HTTP1.1时,除非另有说明,否则所有连接都被认为是持久的。这大大加快了通信速度,因为您不需要为每个请求打开单独的连接。


  看完以上几段,你的脑海中可能会出现以下几个问题:


  如果我收到的内容长度值小于收到的字节数,会发生什么情况?


  在某些情况下(网络或服务器端错误),服务器可能会在发送完整消息之前突然断开连接。HTTP1.1RFC状态:


  当允许在消息正文中给出内容长度时,其字段值必须完全匹配消息正文中的字节数。当收到并检测到无效长度时,HTTP1.1用户代理必须通知用户。



  • 友情链接

关注东软睿道公众号了解更多IT行业资讯

添加东小萌微信
获取更多IT学习资源