draft-ietf-httpbis-resumable-upload-01.txt | draft-ietf-httpbis-resumable-upload-latest.txt | |||
---|---|---|---|---|
HTTP Working Group M. Kleidl, Ed. | HTTP Working Group M. Kleidl, Ed. | |||
Internet-Draft Transloadit Ltd | Internet-Draft Transloadit Ltd | |||
Intended status: Standards Track G. Zhang, Ed. | Intended status: Standards Track G. Zhang, Ed. | |||
Expires: September 3, 2023 Apple Inc. | Expires: December 8, 2023 Apple Inc. | |||
L. Pardue, Ed. | L. Pardue, Ed. | |||
Cloudflare | Cloudflare | |||
March 02, 2023 | June 06, 2023 | |||
Resumable Uploads for HTTP | Resumable Uploads for HTTP | |||
draft-ietf-httpbis-resumable-upload-01 | draft-ietf-httpbis-resumable-upload-latest | |||
Abstract | Abstract | |||
HTTP clients often encounter interrupted data transfers as a result | HTTP clients often encounter interrupted data transfers as a result | |||
of canceled requests or dropped connections. Prior to interruption, | of canceled requests or dropped connections. Prior to interruption, | |||
part of a representation may have been exchanged. To complete the | part of a representation may have been exchanged. To complete the | |||
data transfer of the entire representation, it is often desirable to | data transfer of the entire representation, it is often desirable to | |||
issue subsequent requests that transfer only the remainder of the | issue subsequent requests that transfer only the remainder of the | |||
representation. HTTP range requests support this concept of | representation. HTTP range requests support this concept of | |||
resumable downloads from server to client. This document describes a | resumable downloads from server to client. This document describes a | |||
skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 12 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 3, 2023. | This Internet-Draft will expire on December 8, 2023. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 34 ¶ | skipping to change at page 2, line 34 ¶ | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Conventions and Definitions . . . . . . . . . . . . . . . . . 4 | 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 4 | |||
3. Uploading Overview . . . . . . . . . . . . . . . . . . . . . 4 | 3. Uploading Overview . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Example 1: Complete upload of file with known size . . . 4 | 3.1. Example 1: Complete upload of file with known size . . . 5 | |||
3.2. Example 2: Upload as a series of parts . . . . . . . . . 7 | 3.2. Example 2: Upload as a series of parts . . . . . . . . . 7 | |||
4. Upload Creation Procedure . . . . . . . . . . . . . . . . . . 8 | 4. Upload Creation Procedure . . . . . . . . . . . . . . . . . . 8 | |||
4.1. Feature Detection . . . . . . . . . . . . . . . . . . . . 10 | 4.1. Feature Detection . . . . . . . . . . . . . . . . . . . . 10 | |||
4.2. Draft Version Identification . . . . . . . . . . . . . . 10 | 4.2. Draft Version Identification . . . . . . . . . . . . . . 10 | |||
5. Offset Retrieving Procedure . . . . . . . . . . . . . . . . . 11 | 5. Offset Retrieving Procedure . . . . . . . . . . . . . . . . . 11 | |||
6. Upload Appending Procedure . . . . . . . . . . . . . . . . . 12 | 6. Upload Appending Procedure . . . . . . . . . . . . . . . . . 12 | |||
7. Upload Cancellation Procedure . . . . . . . . . . . . . . . . 14 | 7. Upload Cancellation Procedure . . . . . . . . . . . . . . . . 14 | |||
8. Request Identification . . . . . . . . . . . . . . . . . . . 15 | 8. Request Identification . . . . . . . . . . . . . . . . . . . 15 | |||
9. Header Fields . . . . . . . . . . . . . . . . . . . . . . . . 15 | 9. Header Fields . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
9.1. Upload-Offset . . . . . . . . . . . . . . . . . . . . . . 15 | 9.1. Upload-Offset . . . . . . . . . . . . . . . . . . . . . . 15 | |||
9.2. Upload-Incomplete . . . . . . . . . . . . . . . . . . . . 15 | 9.2. Upload-Incomplete . . . . . . . . . . . . . . . . . . . . 15 | |||
10. Redirection . . . . . . . . . . . . . . . . . . . . . . . . . 16 | 10. Redirection . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
13. Normative References . . . . . . . . . . . . . . . . . . . . 17 | 13. Normative References . . . . . . . . . . . . . . . . . . . . 17 | |||
Appendix A. Since draft-ietf-httpbis-resumable-upload-00 . . . . 17 | Appendix A. Since draft-ietf-httpbis-resumable-upload-01 . . . . 17 | |||
A.1. Since draft-tus-httpbis-resumable-uploads-protocol-02 . . 18 | A.1. Since draft-ietf-httpbis-resumable-upload-00 . . . . . . 17 | |||
A.2. Since draft-tus-httpbis-resumable-uploads-protocol-01 . . 18 | A.2. Since draft-tus-httpbis-resumable-uploads-protocol-02 . . 18 | |||
A.3. Since draft-tus-httpbis-resumable-uploads-protocol-00 . . 18 | A.3. Since draft-tus-httpbis-resumable-uploads-protocol-01 . . 18 | |||
A.4. Since draft-tus-httpbis-resumable-uploads-protocol-00 . . 18 | ||||
Appendix B. Informational Response . . . . . . . . . . . . . . . 18 | Appendix B. Informational Response . . . . . . . . . . . . . . . 18 | |||
Appendix C. Feature Detection . . . . . . . . . . . . . . . . . 19 | Appendix C. Feature Detection . . . . . . . . . . . . . . . . . 19 | |||
Appendix D. Upload Metadata . . . . . . . . . . . . . . . . . . 21 | Appendix D. Upload Metadata . . . . . . . . . . . . . . . . . . 21 | |||
Appendix E. FAQ . . . . . . . . . . . . . . . . . . . . . . . . 21 | Appendix E. FAQ . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 21 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
1. Introduction | 1. Introduction | |||
HTTP clients often encounter interrupted data transfers as a result | HTTP clients often encounter interrupted data transfers as a result | |||
skipping to change at page 17, line 15 ¶ | skipping to change at page 17, line 15 ¶ | |||
Code: 104 (suggested value) | Code: 104 (suggested value) | |||
Description: Upload Resumption Supported | Description: Upload Resumption Supported | |||
Specification: This document | Specification: This document | |||
13. References | 13. References | |||
13.1. Normative References | 13.1. Normative References | |||
[HTTP] Fielding, R., Nottingham, M., and J. Reschke, "HTTP | [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Semantics", draft-ietf-httpbis-semantics-19 (work in | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
progress), September 2021. | DOI 10.17487/RFC9110, June 2022, | |||
<https://www.rfc-editor.org/info/rfc9110>. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
Procedures for Message Header Fields", BCP 90, RFC 3864, | Procedures for Message Header Fields", BCP 90, RFC 3864, | |||
DOI 10.17487/RFC3864, September 2004, | DOI 10.17487/RFC3864, September 2004, | |||
<https://www.rfc-editor.org/info/rfc3864>. | <https://www.rfc-editor.org/info/rfc3864>. | |||
skipping to change at page 17, line 42 ¶ | skipping to change at page 17, line 43 ¶ | |||
[STRUCTURED-FIELDS] | [STRUCTURED-FIELDS] | |||
Nottingham, M. and P-H. Kamp, "Structured Field Values for | Nottingham, M. and P-H. Kamp, "Structured Field Values for | |||
HTTP", RFC 8941, DOI 10.17487/RFC8941, February 2021, | HTTP", RFC 8941, DOI 10.17487/RFC8941, February 2021, | |||
<https://www.rfc-editor.org/info/rfc8941>. | <https://www.rfc-editor.org/info/rfc8941>. | |||
13.2. URIs | 13.2. URIs | |||
[1] https://tus.io/ | [1] https://tus.io/ | |||
Appendix A. Since draft-ietf-httpbis-resumable-upload-00 | Appendix A. Since draft-ietf-httpbis-resumable-upload-01 | |||
None yet | ||||
A.1. Since draft-ietf-httpbis-resumable-upload-00 | ||||
o Remove Upload-Token and instead use Server-generated upload URL | o Remove Upload-Token and instead use Server-generated upload URL | |||
for upload identification. | for upload identification. | |||
o Require the Upload-Incomplete header field in Upload Creation | o Require the Upload-Incomplete header field in Upload Creation | |||
Procedure. | Procedure. | |||
o Increase the draft interop version. | o Increase the draft interop version. | |||
A.1. Since draft-tus-httpbis-resumable-uploads-protocol-02 | A.2. Since draft-tus-httpbis-resumable-uploads-protocol-02 | |||
None | None | |||
A.2. Since draft-tus-httpbis-resumable-uploads-protocol-01 | A.3. Since draft-tus-httpbis-resumable-uploads-protocol-01 | |||
o Clarifying backtracking and preventing skipping ahead during the | o Clarifying backtracking and preventing skipping ahead during the | |||
Offset Receiving Procedure. | Offset Receiving Procedure. | |||
o Clients auto-retry 404 is no longer allowed. | o Clients auto-retry 404 is no longer allowed. | |||
A.3. Since draft-tus-httpbis-resumable-uploads-protocol-00 | A.4. Since draft-tus-httpbis-resumable-uploads-protocol-00 | |||
o Split the Upload Transfer Procedure into the Upload Creation | o Split the Upload Transfer Procedure into the Upload Creation | |||
Procedure and the Upload Appending Procedure. | Procedure and the Upload Appending Procedure. | |||
Appendix B. Informational Response | Appendix B. Informational Response | |||
The server is allowed to respond to Upload Creation Procedure | The server is allowed to respond to Upload Creation Procedure | |||
(Section 4) requests with a "104 (Upload Resumption Supported)" | (Section 4) requests with a "104 (Upload Resumption Supported)" | |||
intermediate response as soon as the server has validated the | intermediate response as soon as the server has validated the | |||
request. This way, the client knows that the server supports | request. This way, the client knows that the server supports | |||
End of changes. 11 change blocks. | ||||
16 lines changed or deleted | 22 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |