RFC 2017
Definition of the URL MIME External-Body Access-Type
Definition of the URL MIME External-Body Access-Type π
Network Working Group πΈ Request for Comments: 2017 π Category: Standards Track π Date: October 1996
Authors: N. Freed (Innosoft International) π«Ά, K. Moore (University of Tennessee) π, and A. Cargille (WG Chair) β¨
Okay, so the title block is giving us the basics: this is a Standards Track RFC from the IETF's Network Working Group, dated October 1996. It doesn't list anything it obsoletes or updates, so it's totally a fresh addition. π¦
Status of This Memo π
Okay, bestie, this bit explains what kind of document this is. It's an Internet standards track protocol for the Internet community π, and it's basically inviting everyone to discuss it and suggest improvements. For the current standardization state and status of this protocol, check the current edition of the "Internet Official Protocol Standards" (STD 1). π Distribution of this memo is unlimited, so share it with everyone β¨.
1. Abstract β¨
Okay, so this memo defines a new access-type for message/external-body MIME parts that uses Uniform Resource Locators (URLs) π₯. URLs give you schemes to reach external objects through a growing bunch of protocols, like HTTP, Gopher, and TELNET π. The first set of URL schemes is defined in RFC 1738. π
2. Introduction π§
Okay, so MIME has this super handy feature where an object can hold a reference or pointer to some data instead of the actual data itself π. It's built into the message/external-body media type from RFC 1521 π. People are using it more and more to save bandwidth when big objects go out to big mailing lists π.
Every message/external-body reference has to say how the actual data can be retrieved. Those mechanisms are called access types π¦. RFC 1521 gives us an initial set of them: "FTP", "ANON-FTP", "TFTP", "LOCAL-FILE", and "MAIL-SERVER" π.
URLs also let you grab remote data automatically πΈ. Every URL string starts with a scheme, and the scheme tells you how to use the rest of the string with some protocol to get the data β¨. Here's the catch: some URL schemes cover protocol operations that don't have a matching MIME access type π. So registering an access type for URLs gives message/external-body access to URL retrieval mechanisms that aren't available as access types yet π«Ά. It also covers any future mechanisms that get URL schemes π₯.
This access type is only meant for URLs that actually retrieve something π . Other URL mechanisms, like mailto, may not be used in this context π.
3. Definition of the URL Access-Type π
Here's how the URL access-type is defined:
- The name of the access-type is URL. π
- A new message/external-body content-type parameter stores the URL string π. It's also named "URL", and this parameter is mandatory for this access-type π«Ά. The next section covers its syntax and use π¦.
- The phantom body area of the message/external-body is not used and should be left blank πΈ.
Here's a quick example of the URL access-type in action π§:
Content-type: message/external-body; access-type=URL;
URL="http://www.foo.com/file"
Content-type: text/html
Content-Transfer-Encoding: binary
THIS IS NOT REALLY THE BODY!
3.1. Syntax and Use of the URL parameter π
Okay, so this part uses the ABNF notation and definitions from RFC 822 and RFC 1521 β¨. The syntax of the URL parameter goes like this π :
URL-parameter := <"> URL-word *(*LWSP-char URL-word) <">
URL-word := token
; Must not exceed 40 characters in length
The syntax of an actual URL string is in RFC 1738 π. URL strings can be any length and can hold pretty much any character content π. That's a problem when URLs get stuffed into MIME body part headers that are wrapped under RFC 822 rules π. So the URL gets transformed into a URL-parameter before it goes into a message/external-body content-type spec π₯:
- First, check that every SPACE, CTL, double quote, backslash, and 8-bit character in the URL string is already encoded with the URL encoding scheme from RFC 1738 π. Any unencoded ones must be encoded π«Ά. This doesn't change the URL. It's just a different way of writing the same URL π.
- Next, break the resulting URL string into substrings of 40 characters or less π.
- Then put each substring into the URL-parameter string as a URL-word, with one or more spaces between them π¦. The enclosing quotes are always required, because every URL has one or more colons, and colons are tspecial characters [RFC 1521] πΈ.
Pulling the URL string back out is even easier π§. You just remove the enclosing quotes and any linear whitespace, and whatever's left is the URL string β¨.
Here's how a long URL gets handled π :
Content-type: message/external-body; access-type=URL;
URL="ftp://ftp.deepdirs.org/1/2/3/4/5/6/7/
8/9/10/11/12/13/14/15/16/17/18/20/21/
file.html"
Content-type: text/html
Content-Transfer-Encoding: binary
THIS IS NOT REALLY THE BODY!
Some URLs can reach multiple versions of the same object in different formats π. HTTP is a good example π. But applications might not expect something whose type doesn't match what the message/external-body says π, and they might have already made irrevocable choices based on that info π.
Because of all that, there's one restriction π: when URLs are used with an access-type, only versions of the object whose content-type matches what the inner message/external-body header specifies can be retrieved and used π.
4. Security Considerations π₯
Okay, bestie, this part is serious π. Using URLs with a MIME access-type has no different security concerns than using them anywhere else π. The specific security considerations for each URL type are covered in the document that defines that URL π«Ά.
Also, the Content-MD5 field can be used with any message/external-body access-type to provide an integrity check π¦. This makes sure the referenced object really is what the message originator meant it to be π . It is NOT a signature service, and you should not confuse it with one, but it's still super useful in lots of situations π.
5. Acknowledgements πΈ
The authors are grateful for the feedback and review from John Beck and John Klensin π«Ά.
6. References π
[RFC-822] : Crocker, D., "Standard for the Format of ARPA Internet Text Messages", STD 11, RFC 822, UDEL, August 1982. π§
[RFC-1521] : Borenstein, N. and N. Freed, "MIME (Multipurpose Internet Mail Extensions): Mechanisms for Specifying and Describing the Format of Internet Message Bodies", RFC 1521, Bellcore, Innosoft, September, 1993. π
[RFC-1590] : Postel, J., "Media Type Registration Procedure", RFC 1590, USC/Information Sciences Institute, March 1994. π
[RFC-1738] : Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform Resource Locators (URL)", December 1994. π
7. Authors' Addresses π
Ned Freed Innosoft International, Inc. 1050 East Garvey Avenue South West Covina, CA 91790 USA
Phone: +1 818 919 3600 Fax: +1 818 919 3614 EMail: ned@innosoft.com
Keith Moore Computer Science Dept. University of Tennessee 107 Ayres Hall Knoxville, TN 37996-1301 USA
EMail: moore@cs.utk.edu
That's the whole spec, bestie! πππ Iconic work from everyone involved π«Άβ¨
π¦ where this page comes from
- ietf: rfc2017 1996-10
- π girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms