我有一个 Web 应用程序,用户可以在其中发布 url 以下载他的文件。我正在使用 libcurl,并且正在检查响应 Content-Length 以强制执行文件大小限制。我担心一些被带走的服务器会继续上传,最终会填满所有可用空间并阻塞我的服务器。如果文件的大小大于 Content-Length,libcurl 会中止下载文件吗?
问问题
781 次
是的,它会(大部分)。由于 Content-Length 字段(使用时)是 HTTP 用于告知此特定响应正文的大小的方式。HTTP 客户端无法读取任何内容,因为连接将保持打开状态并重新用于下一个请求。
这是基本的 HTTP 1.1 功能,您可以在RFC7230中找到详细信息,如果您想阅读 curl 代码,请查看 lib/http.c 源代码以了解 Content-Length 标头匹配和解析,然后进一步了解“maxdownload”字段用于 lib/transfer.c 等。