<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SimonSapin</id>
	<title>WHATWG Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=SimonSapin"/>
	<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/wiki/Special:Contributions/SimonSapin"/>
	<updated>2026-06-03T11:07:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Band_names&amp;diff=9706</id>
		<title>Band names</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Band_names&amp;diff=9706"/>
		<updated>2014-09-24T21:01:52Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* Album titles */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These are band names collected from #whatwg.&lt;br /&gt;
&lt;br /&gt;
* Bogus DOM&lt;br /&gt;
* The Unpaired Surrogates&lt;br /&gt;
* Lone Surrogates&lt;br /&gt;
* The Designated Experts&lt;br /&gt;
* Spidermonkey and the GC Jitters&lt;br /&gt;
* Polyglot Heartbeat&lt;br /&gt;
* Extant Web Corpus&lt;br /&gt;
* Ambushed by Ambiguity&lt;br /&gt;
* Ambiguous Ampersands&lt;br /&gt;
* bad value robot&lt;br /&gt;
* Abort These Steps&lt;br /&gt;
&lt;br /&gt;
== Album titles ==&lt;br /&gt;
&lt;br /&gt;
* User Bang Important Rule&lt;br /&gt;
* Polygoat&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8862</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8862"/>
		<updated>2012-12-02T09:58:20Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ Moved to GitHub.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
See http://simonsapin.github.com/data-urls/&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8861</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8861"/>
		<updated>2012-12-01T21:20:08Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ Add a TODO for missing parsing steps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.w3.org/Bugs/Public/show_bug.cgi?id=19494 Bug 19494] and other stuff linked from there. This is a more precise definition for [http://tools.ietf.org/html/rfc2397 RFC2397]&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error and abort these steps. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value? Example: &amp;lt;code&amp;gt;data:text/plain;foo=&amp;quot;bar,baz&amp;quot;;charset=utf8,body&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Return an error on &amp;quot;invalid&amp;quot; base64? What is invalid? Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what can we reference to define that?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TODO:&#039;&#039;&#039; The algorithm is missing this part of RFC2397:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;If &amp;lt;mediatype&amp;gt; is omitted, it&lt;br /&gt;
   defaults to text/plain;charset=US-ASCII.  As a shorthand,&lt;br /&gt;
   &amp;quot;text/plain&amp;quot; can be omitted but the charset parameter supplied.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; this definition does not impose any length limit on data: URLs. When doing [http://url.spec.whatwg.org/#concept-url-parser URL parsing] followed by this algorithm, implementation are allowed to skip some intermediate steps in order to process large URLs efficiently, as long as the &amp;quot;black box&amp;quot; behavior the same.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8859</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8859"/>
		<updated>2012-11-30T17:13:58Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ Allow (and suggest) some optimization.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.w3.org/Bugs/Public/show_bug.cgi?id=19494 Bug 19494] and other stuff linked from there.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error and abort these steps. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value? Example: &amp;lt;code&amp;gt;data:text/plain;foo=&amp;quot;bar,baz&amp;quot;;charset=utf8,body&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Return an error on &amp;quot;invalid&amp;quot; base64? What is invalid? Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what can we reference to define that?)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; this definition does not impose any length limit on data: URLs. When doing [http://url.spec.whatwg.org/#concept-url-parser URL parsing] followed by this algorithm, implementation are allowed to skip some intermediate steps in order to process large URLs efficiently, as long as the &amp;quot;black box&amp;quot; behavior the same.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8858</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8858"/>
		<updated>2012-11-30T17:01:47Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ issue: what to reference for parsing a Content-Type header?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.w3.org/Bugs/Public/show_bug.cgi?id=19494 Bug 19494] and other stuff linked from there.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error and abort these steps. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value? Example: &amp;lt;code&amp;gt;data:text/plain;foo=&amp;quot;bar,baz&amp;quot;;charset=utf8,body&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Return an error on &amp;quot;invalid&amp;quot; base64? What is invalid? Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what can we reference to define that?)&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8857</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8857"/>
		<updated>2012-11-30T16:55:18Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ Expand on errors and invalid base64&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.w3.org/Bugs/Public/show_bug.cgi?id=19494 Bug 19494] and other stuff linked from there.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error and abort these steps. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value? Example: &amp;lt;code&amp;gt;data:text/plain;foo=&amp;quot;bar,baz&amp;quot;;charset=utf8,body&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Return an error on &amp;quot;invalid&amp;quot; base64? What is invalid? Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8856</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8856"/>
		<updated>2012-11-30T16:51:40Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ Add a link bug 19494&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
See [https://www.w3.org/Bugs/Public/show_bug.cgi?id=19494 Bug 19494] and other stuff linked from there.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value? Example: &amp;lt;code&amp;gt;data:text/plain;foo=&amp;quot;bar,baz&amp;quot;;charset=utf8,body&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8855</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8855"/>
		<updated>2012-11-30T16:45:34Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: /* data: URLs */ Add an example with a comma in a quoted string.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value? Example: &amp;lt;code&amp;gt;data:text/plain;foo=&amp;quot;bar,baz&amp;quot;;charset=utf8,body&amp;lt;/code&amp;gt;)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8854</id>
		<title>URL schemes</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=URL_schemes&amp;diff=8854"/>
		<updated>2012-11-30T16:41:20Z</updated>

		<summary type="html">&lt;p&gt;SimonSapin: Describe parsing of data: URLs. (First pass.)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensing: this page is under CC0, not the MIT License.&lt;br /&gt;
&lt;br /&gt;
== about: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;about: URLs&#039;&#039;&#039; serve as identifier, potentially with an associated resource. The identifier is given in the URL&#039;s scheme data.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Identifier&lt;br /&gt;
! Resource&lt;br /&gt;
! Notes&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;blank&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is text/html;charset=utf-8 and entity body is the empty string.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;invalid&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used to represent a network error. See also [http://dev.w3.org/csswg/css3-values/ CSS Values and Units].&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;legacy-compat&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for XSLT serializers.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;srcdoc&amp;quot;&lt;br /&gt;
| -&lt;br /&gt;
| Used in HTML for its &amp;lt;iframe srcdoc&amp;gt; feature.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;unicorn&amp;quot;&lt;br /&gt;
| A resource whose Content-Type is image/svg+xml and entity body is the contents of [http://html5.org/temp/unicorn.svg unicorn.svg].&lt;br /&gt;
| Unicorn!&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from an about: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* If URL&#039;s scheme data is not the literal string &amp;quot;blank&amp;quot; or &amp;quot;unicorn&amp;quot;, return a network error. (URL&#039;s query and URL&#039;s fragment are simply not taken into account and can be anything.)&lt;br /&gt;
* Return the resource corresponding to the identifier as listed in the table above, with HTTP status code 200 and HTTP status text &amp;quot;OK&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/rfc6694 The &amp;quot;about&amp;quot; URI Scheme] and [http://www.iana.org/assignments/about-uri-tokens/about-uri-tokens.xml &amp;quot;about&amp;quot; URI Tokens] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Input&lt;br /&gt;
! Result&lt;br /&gt;
|-&lt;br /&gt;
| about:blanK&lt;br /&gt;
| network error (uppercase K)&lt;br /&gt;
|-&lt;br /&gt;
| about:bl%61nk&lt;br /&gt;
| network error (no percent decoding by either the URL parser or the obtain a resource algorithm)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee&lt;br /&gt;
| works (query does not matter)&lt;br /&gt;
|-&lt;br /&gt;
| about:blank?teehee#hihi&lt;br /&gt;
| works (fragment does not matter either)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== javascript: URLs ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;javascript: URLs&#039;&#039;&#039; represent a JavaScript script.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a script&#039;&#039;&#039; from a javascript: URL, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Let &#039;&#039;input&#039;&#039; be the concatenation of URL&#039;s scheme data, followed by &amp;quot;?&amp;quot; and URL&#039;s query if URL&#039;s query is non-null, followed by &amp;quot;#&amp;quot; and URL&#039;s fragment if URL&#039;s fragment is non-null.&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the result of [http://url.spec.whatwg.org/#percent-decode percent decoding] &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; starts with a U+FEFF, remove a single occurrence from the start of &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* Return &#039;&#039;input&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
See also [http://tools.ietf.org/html/draft-hoehrmann-javascript-scheme The &#039;javascript&#039; resource identifier scheme] which this wiki page obsoletes.&lt;br /&gt;
&lt;br /&gt;
== data: URLs ==&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;obtain a resource&#039;&#039;&#039; from a [http://url.spec.whatwg.org/#concept-parsed-url parsed URL] whose &#039;&#039;scheme&#039;&#039; is a ASCII case-insensitive match for &amp;quot;data:&amp;quot;, run these steps:&lt;br /&gt;
&lt;br /&gt;
* Set &#039;&#039;input&#039;&#039; to the URL’s [http://url.spec.whatwg.org/#concept-url-scheme-data scheme data].&lt;br /&gt;
* If the URL’s [http://url.spec.whatwg.org/#concept-url-query query] is not null, append &amp;quot;?&amp;quot; and the query to &#039;&#039;input&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;input&#039;&#039; does not contain a U+002C COMMA code point, return a network error. (Note: the comma can come either from the scheme data or the query.)&lt;br /&gt;
* Split &#039;&#039;input&#039;&#039; at the first comma. Set &#039;&#039;header&#039;&#039; and &#039;&#039;body&#039;&#039; to the parts before and after the comma, respectively. (&#039;&#039;&#039;Issue:&#039;&#039;&#039; what if the comma is an a MIME quoted string for a parameter value?)&lt;br /&gt;
* Set &#039;&#039;body-bytes&#039;&#039; to the result of running &#039;&#039;percent decode to bytes&#039;&#039; on &#039;&#039;body&#039;&#039;.&lt;br /&gt;
* If &#039;&#039;header&#039;&#039; ends with &amp;quot;;base64&amp;quot; (&#039;&#039;&#039;Issue:&#039;&#039;&#039; Match how strictly? Case sensitive or not? Allow whitespace? Percent-encoding?) then:&lt;br /&gt;
** Remove the matched substring from &#039;&#039;header&#039;&#039;&lt;br /&gt;
** Decode &#039;&#039;body-bytes&#039;&#039; with the [https://tools.ietf.org/html/rfc4648#section-4 Base 64 Encoding]. (&#039;&#039;&#039;Issues:&#039;&#039;&#039; Also accept the &#039;&#039;URL and Filename Safe Alphabet&#039;&#039;? Mixed alphabets in the same body? Ignore which non-alphabet bytes? Missing/too little/too much padding?)&lt;br /&gt;
* Return a response with &#039;&#039;header&#039;&#039; as a &#039;&#039;Content-Type&#039;&#039; header and &#039;&#039;body-bytes&#039;&#039; as the body. The parsing and interpretation of &#039;&#039;header&#039;&#039; must be the same as for an HTTP &#039;&#039;Content-Type&#039;&#039; header.&lt;br /&gt;
&lt;br /&gt;
To &#039;&#039;&#039;percent decode to bytes&#039;&#039;&#039;, run the same algorithm as &#039;&#039;&#039;[http://url.spec.whatwg.org/#percent-decode percent decode]&#039;&#039;&#039; but replacing the last step with &amp;quot;Return &#039;&#039;bytes&#039;&#039;.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Others ==&lt;br /&gt;
&lt;br /&gt;
* [http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol ws: &amp;amp; wss:]&lt;br /&gt;
* See [http://en.wikipedia.org/wiki/URI_scheme Wikipedia]&lt;br /&gt;
* See [http://www.iana.org/assignments/uri-schemes.html IANA]&lt;br /&gt;
&lt;br /&gt;
[[Category:Registries]]&lt;br /&gt;
[[Category:Spec coordination]]&lt;/div&gt;</summary>
		<author><name>SimonSapin</name></author>
	</entry>
</feed>