delphi 为什么TIdHTTP.Head()会生成“HTTP/1.1 406 Not Acceptable”异常?

o4hqfura  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(178)

我尝试使用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]

我应该找什么?

esyap4oy

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属性中启用sslvSSLv2sslvSSLv3。它们已经过时,因为它们不再安全,没有人再使用SSL v2.0和v3.0了。

相关问题