我尝试使用TIdHTTP.Head('https://www.myurl.com/myfile.zip')
,只是为了在下载之前获得文件大小。
我得到文件大小,这样我就可以打开多个线程并行下载文件的一部分,这样下载会更快。
直到最近,Head()
方法开始引发这个异常:
项目myproject.exe引发了异常类EIdHTTPProtocolException,消息为“HTTP/1.1 406 Not Acceptable”。
我的TIdHTTP
连接到TIdSSLIOHandlerSocketOpenSSL
,其中SSLOptions
:
Method = sslvSSLv23
SSLVersions = [sslvSSLv2,sslvSSLv3,sslvTLSv1,sslvTLSv1_1,sslvTLSv1_2]
我应该找什么?
1条答案
按热度按时间esyap4oy1#
HTTP服务器出现
406 Not Acceptable
错误。它 * 通常 *1意味着请求有一个Accept
头部,指定客户端愿意接收的数据类型,但服务器无法以任何这些类型发送所请求的资源。1不太可能,错误也可能意味着中间防火墙正在阻止请求。
默认的
TIdHTTP.Request.Accept
值为'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
。*/*
* 应该 * 包括.zip
文件,但如果你知道你只对.zip
文件感兴趣,那么你应该将TIdHTTP.Request.Accept
属性设置为'application/zip'
。顺便说一句:您不应该在SSLIONIC的
SSLVersions
属性中启用sslvSSLv2
和sslvSSLv3
。它们已经过时,因为它们不再安全,没有人再使用SSL v2.0和v3.0了。