【问题标题】:What is the difference between `Content-Length` and `Transfer-Encoding`? urllib.request.urlopen [duplicate]`Content-Length` 和 `Transfer-Encoding` 有什么区别? urllib.request.urlopen [重复]
【发布时间】:2021-04-13 04:41:48
【问题描述】:

我将使用 GitHub 网址进行下载。
但是,urlopen 接收到的值并不总是恒定的。

如果你运行下面的代码,

import urllib.request 

url = "https://github.com/PixarAnimationStudios/USD/archive/v20.11.zip"
u = urllib.request.urlopen(url)

meta = u.info()
print(u.headers.keys())
print(u.headers.get("Content-Type"))
print(u.headers.get("Transfer-Encoding"))
print(u.headers.get("Content-Length"))

案例1

['Date', 'Content-Type', 'Content-Length', 'Connection', 'Access-Control-Allow-Origin', 'Content-Disposition', 'Content-Security-Policy', 'ETag', 'Strict-Transport-Security', 'Vary', 'X-Content-Type-Options', 'X-Frame-Options', 'X-XSS-Protection', 'X-Varnish', 'Age', 'Via', 'X-Cache', 'X-Cache-Hits', 'Accept-Ranges', 'Vary', 'X-GitHub-Request-Id']
application/zip
None
30301735

案例2

['Date', 'Content-Type', 'Transfer-Encoding', 'Connection', 'Access-Control-Allow-Origin', 'Content-Disposition', 'Content-Security-Policy', 'ETag', 'Strict-Transport-Security', 'Vary', 'X-Content-Type-Options', 'X-Frame-Options', 'X-XSS-Protection', 'X-Varnish', 'Age', 'Via', 'X-Cache', 'X-Cache-Hits', 'Accept-Ranges', 'Vary', 'X-GitHub-Request-Id']
application/zip
chunked
None

Content-LengthTransfer-Encoding 有什么区别?

我用的是python3.9

【问题讨论】:

    标签: python-3.x github


    【解决方案1】:

    Content-LengthTransfer-Encoding 有什么区别?

    一个告诉您how long the response's content is(可能不存在),另一个告诉您是否使用其他方式发送响应而不是直接发送数据(并且可能不存在)。

    在第一种情况下,您看到 not 使用 chunked Transfer-Encoding 意味着服务器必须预先发送 Content-Length 以便您的客户端知道它已收到整个文件。

    在第二个中,文件是sent with chunked,因此没有预先声明完整长度,并且省略了Content-Length。内容的长度can be determined来自每个块的总和。

    【讨论】:

    • 感谢您的回答。那么,有什么方法可以让我始终包含内容长度?或者我如何通过传输编码来获取大小?
    • 我添加了指向 stackoverflow.com/questions/4929484/… 的链接。答案是:下载文件,看看你得到了多少。如果这不是一个选项,您需要问一个更具体的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2019-09-22
    • 1970-01-01
    相关资源
    最近更新 更多