我正在开发自己的多线程网络下载器。在开始之前,我搜索了同样的问题,但文章告诉我,如果服务器支持部分内容,他们可以接受请求标头Range: bytes=a-b
并返回206
响应代码。根据这条规则,这是我的代码。
# Occur HEAD request and get more information
def _get_url_header(self):
interface.info_out('HEAD_REQUEST')
headers = {
'Range': 'bytes=0-1'
}
response = requests.head(self.url, stream = True, headers = headers)
print(response.status_code)
# This if statement need modify!!!
if response.status_code == 206:
self.partital_content = True
interface.info_out('PARTITAL_SUPPORT')
elif response.status_code // 100 == 4:
interface.info_out('CONNECTION_ERROR', response.status_code)
elif response.status_code // 100 == 2:
self.partital_content = False
interface.info_out('PARTITAL_NOT_SUPPORT')
但是当我测试我的代码时,我偶然发现虽然我得到了200
代码,但服务器仍然接受我的Range
标题,换句话说,服务器仍然支持部分内容传输!
那怎么了?我怎么说服务器是否支持部分内容?