我们正在尝试使用 TIdHTTPServer 组件为我们的软件编写更新服务器。目前,我们正在提供一个 XML 文件,其中列出了可用更新及其文件版本等,当客户端程序找到更新版本时,它应该开始使用 BITS 下载它。
现在这是我们遇到问题的地方,我们的程序正在请求 XML 文件并看到有可用的更新。然后它会创建一个 BITS 作业来下载它,但是 BITS 不断报告下载失败。我们可以使用相同的 URL 和 IE/Firefox/Chrome 下载文件。
所以我的问题:
TIdHTTPServer 与 BITS 兼容吗?
我问这个问题是因为我发现要让 bit 工作有这些下载要求。
BITS 下载的 HTTP 要求
BITS 支持 HTTP 和 HTTPS 下载和上传,要求服务器支持 HTTP/1.1 协议。对于下载,HTTP 服务器的 Head 方法必须返回文件大小,并且它的 Get 方法必须支持 Content-Range 和 Content-Length 标头。因此,除非 ASP、ISAPI 或 CGI 脚本支持 Content-Range 和 Content-Length 标头,否则 BITS 仅传输静态文件内容并在您尝试传输动态内容时生成错误。
只要满足 Head 和 Get 方法要求,BITS 就可以使用 HTTP/1.0 服务器。
为了支持文件的下载范围,服务器必须支持以下要求:
允许 MIME 标头包含标准的 Content-Range 和 Content-Type 标头,以及最多 180 字节的其他标头。在 HTTP 标头和第一个边界字符串之间最多允许两个 CR/LF。