|
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 Network Working Group L. Masinter |
|
8 Request for Comments: 2397 Xerox Corporation |
|
9 Category: Standards Track August 1998 |
|
10 |
|
11 |
|
12 The "data" URL scheme |
|
13 |
|
14 Status of this Memo |
|
15 |
|
16 This document specifies an Internet standards track protocol for the |
|
17 Internet community, and requests discussion and suggestions for |
|
18 improvements. Please refer to the current edition of the "Internet |
|
19 Official Protocol Standards" (STD 1) for the standardization state |
|
20 and status of this protocol. Distribution of this memo is unlimited. |
|
21 |
|
22 Copyright Notice |
|
23 |
|
24 Copyright (C) The Internet Society (1998). All Rights Reserved. |
|
25 |
|
26 1. Abstract |
|
27 |
|
28 A new URL scheme, "data", is defined. It allows inclusion of small |
|
29 data items as "immediate" data, as if it had been included |
|
30 externally. |
|
31 |
|
32 2. Description |
|
33 |
|
34 Some applications that use URLs also have a need to embed (small) |
|
35 media type data directly inline. This document defines a new URL |
|
36 scheme that would work like 'immediate addressing'. The URLs are of |
|
37 the form: |
|
38 |
|
39 data:[<mediatype>][;base64],<data> |
|
40 |
|
41 The <mediatype> is an Internet media type specification (with |
|
42 optional parameters.) The appearance of ";base64" means that the data |
|
43 is encoded as base64. Without ";base64", the data (as a sequence of |
|
44 octets) is represented using ASCII encoding for octets inside the |
|
45 range of safe URL characters and using the standard %xx hex encoding |
|
46 of URLs for octets outside that range. If <mediatype> is omitted, it |
|
47 defaults to text/plain;charset=US-ASCII. As a shorthand, |
|
48 "text/plain" can be omitted but the charset parameter supplied. |
|
49 |
|
50 The "data:" URL scheme is only useful for short values. Note that |
|
51 some applications that use URLs may impose a length limit; for |
|
52 example, URLs embedded within <A> anchors in HTML have a length limit |
|
53 determined by the SGML declaration for HTML [RFC1866]. The LITLEN |
|
54 (1024) limits the number of characters which can appear in a single |
|
55 |
|
56 |
|
57 |
|
58 Masinter Standards Track [Page 1] |
|
59 |
|
60 RFC 2397 The "data" URL scheme August 1998 |
|
61 |
|
62 |
|
63 attribute value literal, the ATTSPLEN (2100) limits the sum of all |
|
64 lengths of all attribute value specifications which appear in a tag, |
|
65 and the TAGLEN (2100) limits the overall length of a tag. |
|
66 |
|
67 The "data" URL scheme has no relative URL forms. |
|
68 |
|
69 3. Syntax |
|
70 |
|
71 dataurl := "data:" [ mediatype ] [ ";base64" ] "," data |
|
72 mediatype := [ type "/" subtype ] *( ";" parameter ) |
|
73 data := *urlchar |
|
74 parameter := attribute "=" value |
|
75 |
|
76 where "urlchar" is imported from [RFC2396], and "type", "subtype", |
|
77 "attribute" and "value" are the corresponding tokens from [RFC2045], |
|
78 represented using URL escaped encoding of [RFC2396] as necessary. |
|
79 |
|
80 Attribute values in [RFC2045] are allowed to be either represented as |
|
81 tokens or as quoted strings. However, within a "data" URL, the |
|
82 "quoted-string" representation would be awkward, since the quote mark |
|
83 is itself not a valid urlchar. For this reason, parameter values |
|
84 should use the URL Escaped encoding instead of quoted string if the |
|
85 parameter values contain any "tspecial". |
|
86 |
|
87 The ";base64" extension is distinguishable from a content-type |
|
88 parameter by the fact that it doesn't have a following "=" sign. |
|
89 |
|
90 4. Examples |
|
91 |
|
92 A data URL might be used for arbitrary types of data. The URL |
|
93 |
|
94 data:,A%20brief%20note |
|
95 |
|
96 encodes the text/plain string "A brief note", which might be useful |
|
97 in a footnote link. |
|
98 |
|
99 The HTML fragment: |
|
100 |
|
101 <IMG |
|
102 SRC="data:image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw |
|
103 AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz |
|
104 ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp |
|
105 a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl |
|
106 ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis |
|
107 F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH |
|
108 hhx4dbgYKAAA7" |
|
109 ALT="Larry"> |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 Masinter Standards Track [Page 2] |
|
115 |
|
116 RFC 2397 The "data" URL scheme August 1998 |
|
117 |
|
118 |
|
119 could be used for a small inline image in a HTML document. (The |
|
120 embedded image is probably near the limit of utility. For anything |
|
121 else larger, data URLs are likely to be inappropriate.) |
|
122 |
|
123 A data URL scheme's media type specification can include other |
|
124 parameters; for example, one might specify a charset parameter. |
|
125 |
|
126 data:text/plain;charset=iso-8859-7,%be%fg%be |
|
127 |
|
128 can be used for a short sequence of greek characters. |
|
129 |
|
130 Some applications may use the "data" URL scheme in order to provide |
|
131 setup parameters for other kinds of networking applications. For |
|
132 example, one might create a media type |
|
133 application/vnd-xxx-query |
|
134 |
|
135 whose content consists of a query string and a database identifier |
|
136 for the "xxx" vendor's databases. A URL of the form: |
|
137 |
|
138 data:application/vnd-xxx- |
|
139 query,select_vcount,fcol_from_fieldtable/local |
|
140 |
|
141 could then be used in a local application to launch the "helper" for |
|
142 application/vnd-xxx-query and give it the immediate data included. |
|
143 |
|
144 5. History |
|
145 |
|
146 This idea was originally proposed August 1995. Some versions of the |
|
147 data URL scheme have been used in the definition of VRML, and a |
|
148 version has appeared as part of a proposal for embedded data in HTML. |
|
149 Various changes have been made, based on requests, to elide the media |
|
150 type, pack the indication of the base64 encoding more tightly, and |
|
151 eliminate "quoted printable" as an encoding since it would not easily |
|
152 yield valid URLs without additional %xx encoding, which itself is |
|
153 sufficient. The "data" URL scheme is in use in VRML, new applications |
|
154 of HTML, and various commercial products. It is being used for object |
|
155 parameters in Java and ActiveX applications. |
|
156 |
|
157 6. Security |
|
158 |
|
159 Interpretation of the data within a "data" URL has the same security |
|
160 considerations as any implementation of the given media type. An |
|
161 application should not interpret the contents of a data URL which is |
|
162 marked with a media type that has been disallowed for processing by |
|
163 the application's configuration. |
|
164 |
|
165 |
|
166 |
|
167 |
|
168 |
|
169 |
|
170 Masinter Standards Track [Page 3] |
|
171 |
|
172 RFC 2397 The "data" URL scheme August 1998 |
|
173 |
|
174 |
|
175 Sites which use firewall proxies to disallow the retrieval of certain |
|
176 media types (such as application script languages or types with known |
|
177 security problems) will find it difficult to screen against the |
|
178 inclusion of such types using the "data" URL scheme. However, they |
|
179 should be aware of the threat and take whatever precautions are |
|
180 considered necessary within their domain. |
|
181 |
|
182 The effect of using long "data" URLs in applications is currently |
|
183 unknown; some software packages may exhibit unreasonable behavior |
|
184 when confronted with data that exceeds its allocated buffer size. |
|
185 |
|
186 7. References |
|
187 |
|
188 [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, |
|
189 "Uniform Resource Identifiers (URI): Generic Syntax", RFC |
|
190 2396, August 1998. |
|
191 |
|
192 [RFC1866] Berners-Lee, T., and D. Connolly, "Hypertext Markup |
|
193 Language - 2.0.", RFC 1866, November 1995. |
|
194 |
|
195 [RFC2045] Freed N., and N. Borenstein., "Multipurpose Internet Mail |
|
196 Extensions (MIME) Part One: Format of Internet Message |
|
197 Bodies", RFC 2045, November 1996. |
|
198 |
|
199 Author contact information: |
|
200 |
|
201 Larry Masinter |
|
202 Xerox Palo Alto Research Center |
|
203 3333 Coyote Hill Road |
|
204 Palo Alto, CA 94304 |
|
205 |
|
206 EMail: masinter@parc.xerox.com |
|
207 |
|
208 |
|
209 |
|
210 |
|
211 |
|
212 |
|
213 |
|
214 |
|
215 |
|
216 |
|
217 |
|
218 |
|
219 |
|
220 |
|
221 |
|
222 |
|
223 |
|
224 |
|
225 |
|
226 Masinter Standards Track [Page 4] |
|
227 |
|
228 RFC 2397 The "data" URL scheme August 1998 |
|
229 |
|
230 |
|
231 Full Copyright Statement |
|
232 |
|
233 Copyright (C) The Internet Society (1998). All Rights Reserved. |
|
234 |
|
235 This document and translations of it may be copied and furnished to |
|
236 others, and derivative works that comment on or otherwise explain it |
|
237 or assist in its implementation may be prepared, copied, published |
|
238 and distributed, in whole or in part, without restriction of any |
|
239 kind, provided that the above copyright notice and this paragraph are |
|
240 included on all such copies and derivative works. However, this |
|
241 document itself may not be modified in any way, such as by removing |
|
242 the copyright notice or references to the Internet Society or other |
|
243 Internet organizations, except as needed for the purpose of |
|
244 developing Internet standards in which case the procedures for |
|
245 copyrights defined in the Internet Standards process must be |
|
246 followed, or as required to translate it into languages other than |
|
247 English. |
|
248 |
|
249 The limited permissions granted above are perpetual and will not be |
|
250 revoked by the Internet Society or its successors or assigns. |
|
251 |
|
252 This document and the information contained herein is provided on an |
|
253 "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING |
|
254 TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING |
|
255 BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION |
|
256 HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF |
|
257 MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. |
|
258 |
|
259 |
|
260 |
|
261 |
|
262 |
|
263 |
|
264 |
|
265 |
|
266 |
|
267 |
|
268 |
|
269 |
|
270 |
|
271 |
|
272 |
|
273 |
|
274 |
|
275 |
|
276 |
|
277 |
|
278 |
|
279 |
|
280 |
|
281 |
|
282 Masinter Standards Track [Page 5] |
|
283 |