303 重定向通常是在通过浏览器上传的场景中使用。浏览器中的网页可以在发起上传请求的同时通知服务器,一旦上传成功,服务器应该返回 HTTP 303 状态码并带上一个重定向 URL。浏览器在收到服务器返回的这个重定向 URL 后,将当前页面跳转到对应页面。
HTTP 303 重定向(参考RFC 2616 - 10.3.4)是 HTTP 1.1 规范的组成部分。服务器可以通过返回 303 状态码告诉客户端,本次请求的内容可以通过返回的跳转 URL 得到,因此客户端应该重定向到新的 URL。该技术被广泛用于网页开发领域,如在文件上传完成后让客户端自动重定向到一个上传成功的结果页面。七牛云存储的资源上传后续动作也支持 303 重定向功能。
在构造上传凭证时,开发者可以通过设置上传策略 (PutPolicy)中的 returnUrl 参数以激活 303 重定向功能。在成功完成上传后,服务端会向客户端返回 HTTP 303 状态码,并在 Location 字段中携带上传时指定的重定向地址。如下所示:
HTTP/1.1 303 See Other
Location: <returnUrl>
客户端收到这样的反馈后,应按 HTTP 1.1 标准将当前页面重定向到 Location 字段所指定的 URL。主流浏览器都支持该跳转操作。
如果上传策略中还设定了自定义返回内容 returnBody,则服务端返回的 303 响应中的 Location 字段也会包含自定义返回内容。参数值采用URL 安全的 Base64 编码。此时的响应内容如下所示:
HTTP/1.1 303 See Other
Location: <returnUrl>?upload_ret=<encoded_return_body>
如果希望返回的自定义返回内容能得到正确处理,重定向 URL 所对应的服务器需支持请求参数 upload_ret。
文档反馈
(如有产品使用问题,请 提交工单)