这可能是一个非常基本的问题,所以请原谅我的无知
服务器使用哪种方法来响应收到的请求?
我正在制作一个 Web 应用,其中有一条特定路由会返回一个大文件(例如 .iso 映像)。因此,当用户单击下载按钮时,我会让 JavaScript 使用 请求 URL {method: "GET"}
。
当用户的机器开始下载时,服务器使用哪种 HTTP 方法发送文件?
我真的很困惑:
- 服务器上传和用户下载是如何处理?
- 对于大文件,它是否默认使用 POST ?
- 作为一名程序员,我如何确保最终用户可以轻松(可恢复)下载?
答案1
服务器用户使用哪种方法来响应收到的请求?
HTTP是请求-响应协议。无论你使用哪种 HTTP 方法(GET、POST、HEAD 等)向服务器发出请求,服务器总是响应方式相同(与请求方法无关);当然响应内容会根据您的请求而改变。
因此不存在 POST 或 GET 响应。
服务器上传和用户下载是如何处理?
当将文件上传到服务器/服务时,你发送的请求包含文件本身,即 HTTP 协议建议 你应该使用 POST 请求发送数据。
从服务器下载文件时,服务器将在响应中向您发送文件。请求远程文件时应使用 GET 请求,因为 GET 被定义为用于检索资源的命令。此外,发送的数据类型在请求和响应的标头部分中指定为Content-Type
。
请注意,您可以还使用 GET 上传文件,将整个文件塞入 URL,或下载文件并响应 POST 请求。然而,这些都是非标准应用程序,有限制(例如,限制 URL 的最大长度),您在服务器端处理这些请求时还需要做更多工作。
对于大文件,是否默认使用 POST?
这个问题应该已经回答了——服务器不会向您发送任何 POST 或 GET,只会发送响应。
作为一名程序员,我如何确保最终用户可以轻松(可恢复)下载?
这取决于所使用的服务器端和客户端技术。现代浏览器和正确配置的 Web 服务器通常可以自动恢复现有文件的下载。但是,如果您在服务器上手动构建文件响应,则还需要手动处理下载恢复。请参阅此答案使用 PHP 实现。
答案2
和GET
是POST
客户端的请求方法。请参阅比较。
- GET - 从指定资源请求数据。查询字符串(名称/值对)在 GET 请求的 URL 中发送。
- POST - 将要处理的数据提交给指定资源。查询字符串(名称/值对)在 POST 请求的 HTTP 消息正文中发送。
方法在请求和响应之间没有变化。响应标头甚至没有提及该方法。(示例来自此HTTP 基础文章。)
HTTP/1.1 200 OK
Date: Sun, 18 Oct 2009 08:56:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Sat, 20 Nov 2004 07:16:26 GMT
ETag: "10000000565a5-2c-3e94b66c2e680"
Accept-Ranges: bytes
Content-Length: 44
Connection: close
Content-Type: text/html
X-Pad: avoid browser bug
<html><body><h1>It works!</h1></body></html>
在这里,Content-Type
标题在识别客户端应该如何处理内容方面起着更大的作用。