Fix relative URIs given <base> tags (#422)

pull/428/head
Brad Philips 6 years ago committed by Gijs Kruitbosch
parent d598baf02b
commit 8525c6af36

@ -269,34 +269,20 @@ Readability.prototype = {
* @return void
*/
_fixRelativeUris: function(articleContent) {
var scheme = this._uri.scheme;
var prePath = this._uri.prePath;
var pathBase = this._uri.pathBase;
var baseURI = this._doc.baseURI;
var documentURI = this._doc.documentURI;
function toAbsoluteURI(uri) {
// If this is already an absolute URI, return it.
if (/^[a-zA-Z][a-zA-Z0-9\+\-\.]*:/.test(uri))
// Leave hash links alone if the base URI matches the document URI:
if (baseURI == documentURI && uri.charAt(0) == "#") {
return uri;
// Scheme-rooted relative URI.
if (uri.substr(0, 2) == "//")
return scheme + "://" + uri.substr(2);
// Prepath-rooted relative URI.
if (uri[0] == "/")
return prePath + uri;
// Dotslash relative URI.
if (uri.indexOf("./") === 0)
return pathBase + uri.slice(2);
// Ignore hash URIs:
if (uri[0] == "#")
return uri;
// Standard relative URI; add entire path. pathBase already includes a
// trailing "/".
return pathBase + uri;
}
// Otherwise, resolve against base URI:
try {
return new URL(uri, baseURI).href;
} catch (ex) {
// Something went wrong, just return the original:
}
return uri;
}
var links = articleContent.getElementsByTagName("a");

@ -100,7 +100,6 @@ function onResponseReceived(source) {
}
function runReadability(source, destPath, metadataDestPath) {
var doc = new JSDOMParser().parse(source);
var uri = {
spec: "http://fakehost/test/page.html",
host: "fakehost",
@ -108,6 +107,7 @@ function runReadability(source, destPath, metadataDestPath) {
scheme: "http",
pathBase: "http://fakehost/test/"
};
var doc = new JSDOMParser().parse(source, uri.spec);
var myReader, result, readerable;
try {
// We pass `caption` as a class to check that passing in extra classes works,

@ -3,7 +3,7 @@
<article role="article">
<p>For more than a decade the Web has used XMLHttpRequest (XHR) to achieve asynchronous requests in JavaScript. While very useful, XHR is not a very nice API. It suffers from lack of separation of concerns. The input, output and state are all managed by interacting with one object, and state is tracked using events. Also, the event-based model doesnt play well with JavaScripts recent focus on Promise- and generator-based asynchronous programming.</p>
<p>The <a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">Fetch API</a> intends to fix most of these problems. It does this by introducing the same primitives to JS that are used in the HTTP protocol. In addition, it introduces a utility function <code>fetch()</code> that succinctly captures the intention of retrieving a resource from the network.</p>
<p>The <a href="https://fetch.spec.whatwg.org">Fetch specification</a>, which defines the API, nails down the semantics of a user agent fetching a resource. This, combined with ServiceWorkers, is an attempt to:</p>
<p>The <a href="https://fetch.spec.whatwg.org/">Fetch specification</a>, which defines the API, nails down the semantics of a user agent fetching a resource. This, combined with ServiceWorkers, is an attempt to:</p>
<ol>
<li>Improve the offline experience.</li>
<li>Expose the building blocks of the Web to the platform as part of the <a href="https://extensiblewebmanifesto.org/">extensible web movement</a>.</li>
@ -121,7 +121,7 @@ console.<span>log</span><span>(</span>reqHeaders.<span>getAll</span><span>(</spa
<li>“response”: naturally, for Headers obtained from Response (<code>Response.headers</code>).</li>
<li>“immutable”: Mostly used for ServiceWorkers, renders a Headers object <br/>read-only.</li>
</ul>
<p>The details of how each guard affects the behaviors of the Headers object are <br/>in the <a href="https://fetch.spec.whatwg.org">specification</a>. For example, you may not append or set a “request” guarded Headers “Content-Length” header. Similarly, inserting “Set-Cookie” into a Response header is not allowed so that ServiceWorkers may not set cookies via synthesized Responses.</p>
<p>The details of how each guard affects the behaviors of the Headers object are <br/>in the <a href="https://fetch.spec.whatwg.org/">specification</a>. For example, you may not append or set a “request” guarded Headers “Content-Length” header. Similarly, inserting “Set-Cookie” into a Response header is not allowed so that ServiceWorkers may not set cookies via synthesized Responses.</p>
<p>All of the Headers methods throw TypeError if <code>name</code> is not a <a href="https://fetch.spec.whatwg.org/#concept-header-name">valid HTTP Header name</a>. The mutation operations will throw TypeError if there is an immutable guard. Otherwise they fail silently. For example:</p>
<div>
<table>

@ -0,0 +1,7 @@
{
"title": "Base URL with base relative test",
"byline": null,
"dir": null,
"excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"readerable": false
}

@ -0,0 +1,22 @@
<div id="readability-page-1" class="page">
<article>
<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
<p>Links</p>
<p><a href="http://fakehost/test/base/foo/bar/baz.html">link</a></p>
<p><a href="http://fakehost/test/base/foo/bar/baz.html">link</a></p>
<p><a href="http://fakehost/foo/bar/baz.html">link</a></p>
<p><a href="http://fakehost/test/base/#foo">link</a></p>
<p><a href="http://fakehost/test/base/baz.html#foo">link</a></p>
<p><a href="http://fakehost/foo/bar/baz.html#foo">link</a></p>
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
<p><img src="http://fakehost/test/base/foo/bar/baz.png"/></p>
<p><img src="http://fakehost/test/base/foo/bar/baz.png"/></p>
<p><img src="http://fakehost/foo/bar/baz.png"/></p>
<p><img src="http://test/foo/bar/baz.png"/></p>
<p><img src="https://test/foo/bar/baz.png"/></p>
<h2>Foo</h2>
<p> Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
</article>
</div>

@ -0,0 +1,44 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<base href="base/"/>
<title>Base URL with base relative test</title>
</head>
<body>
<article>
<h1>Lorem</h1>
<div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<p>Links</p>
<p><a href="foo/bar/baz.html">link</a></p>
<p><a href="./foo/bar/baz.html">link</a></p>
<p><a href="/foo/bar/baz.html">link</a></p>
<p><a href="#foo">link</a></p>
<p><a href="baz.html#foo">link</a></p>
<p><a href="/foo/bar/baz.html#foo">link</a></p>
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
<p><img src="foo/bar/baz.png"/></p>
<p><img src="./foo/bar/baz.png"/></p>
<p><img src="/foo/bar/baz.png"/></p>
<p><img src="http://test/foo/bar/baz.png"/></p>
<p><img src="https://test/foo/bar/baz.png"/></p>
<h2>Foo</h2>
<div>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</article>
</body>
</html>

@ -0,0 +1,7 @@
{
"title": "Base URL with base test",
"byline": null,
"dir": null,
"excerpt": "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\n quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\n consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\n cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\n proident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
"readerable": false
}

@ -0,0 +1,22 @@
<div id="readability-page-1" class="page">
<article>
<p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
<p>Links</p>
<p><a href="http://fakehost/foo/bar/baz.html">link</a></p>
<p><a href="http://fakehost/foo/bar/baz.html">link</a></p>
<p><a href="http://fakehost/foo/bar/baz.html">link</a></p>
<p><a href="http://fakehost/#foo">link</a></p>
<p><a href="http://fakehost/baz.html#foo">link</a></p>
<p><a href="http://fakehost/foo/bar/baz.html#foo">link</a></p>
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
<p><img src="http://fakehost/foo/bar/baz.png"/></p>
<p><img src="http://fakehost/foo/bar/baz.png"/></p>
<p><img src="http://fakehost/foo/bar/baz.png"/></p>
<p><img src="http://test/foo/bar/baz.png"/></p>
<p><img src="https://test/foo/bar/baz.png"/></p>
<h2>Foo</h2>
<p> Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </p>
</article>
</div>

@ -0,0 +1,44 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<base href="/"/>
<title>Base URL with base test</title>
</head>
<body>
<article>
<h1>Lorem</h1>
<div>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<p>Links</p>
<p><a href="foo/bar/baz.html">link</a></p>
<p><a href="./foo/bar/baz.html">link</a></p>
<p><a href="/foo/bar/baz.html">link</a></p>
<p><a href="#foo">link</a></p>
<p><a href="baz.html#foo">link</a></p>
<p><a href="/foo/bar/baz.html#foo">link</a></p>
<p><a href="http://test/foo/bar/baz.html">link</a></p>
<p><a href="https://test/foo/bar/baz.html">link</a></p>
<p>Images</p>
<p><img src="foo/bar/baz.png"/></p>
<p><img src="./foo/bar/baz.png"/></p>
<p><img src="/foo/bar/baz.png"/></p>
<p><img src="http://test/foo/bar/baz.png"/></p>
<p><img src="https://test/foo/bar/baz.png"/></p>
<h2>Foo</h2>
<div>
Tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</article>
</body>
</html>

@ -5,11 +5,10 @@
<h2><span face="Lucida Handwriting " color="Maroon
">"Bartleby the Scrivener: A Story of Wall-Street " </span>(1853)&nbsp;<br/>
Herman Melville</h2>
<h2><a href="http://www.vcu.edu/engweb/webtexts/bartleby.html
" target="_blank "><img src="http://fakehost/test/hmhome.gif " alt="To the story text without notes
<h2><a href="http://www.vcu.edu/engweb/webtexts/bartleby.html" target="_blank "><img src="http://fakehost/test/hmhome.gif" alt="To the story text without notes
" height="38 " width="38 "/></a>
</h2>
<h3>Prepared by <a href="http://www.vcu.edu/engweb ">Ann
<h3>Prepared by <a href="http://www.vcu.edu/engweb">Ann
Woodlief,</a> Virginia Commonwealth University</h3>
<h5>Click on text in red for hypertext notes and questions</h5> I am a rather elderly man. The nature of my avocations for the last thirty years has brought me into more than ordinary contact with what would seem an interesting and somewhat singular set of men of whom as yet nothing that I know of has ever been written:-- I mean the law-copyists or scriveners. I have known very many of them, professionally and privately, and if I pleased, could relate divers histories, at which good-natured gentlemen might smile, and sentimental souls might weep. But I waive the biographies of all other scriveners for a few passages in the life of Bartleby, who was a scrivener the strangest I ever saw or heard of. While of other law-copyists I might write the complete life, of Bartleby nothing of that sort can be done. I believe that no materials exist for a full and satisfactory biography of this man. It is an irreparable loss to literature. Bartleby was one of those beings of whom nothing is ascertainable, except from the original sources, and in his case those are very small. What my own astonished eyes saw of Bartleby, that is all I know of him, except, indeed, one vague report which will appear in the sequel.
<p>Ere introducing the scrivener, as he first appeared to me, it is fit I make some mention of myself, my employees, my business, my chambers, and general surroundings; because some such description is indispensable to an adequate understanding of the chief character about to be presented. </p>

@ -39,7 +39,7 @@
<p><ins></ins>  所以,当宇航员在地球轨道上时,将还不得不满足于通过欣赏外面的景色来振作精神,而不要指望沉溺于烈酒中。我们留在地球上的人,则可以准备好适量的香槟酒,以迎接他们的归来。</p>
<p>  原标题:他晚于阿姆斯特朗登月 却是首个敢在月球喝酒的人</p>
<p><strong>  出品︱网易科学人栏目组 胖胖</strong></p>
<p><strong>  作者︱春春</strong> <a href="http://www.gmw.cn" target="_blank"><img src="https://img.gmw.cn/pic/content_logo.png" title="返回光明网首页"/></a> </p>
<p><strong>  作者︱春春</strong> <a href="http://www.gmw.cn/" target="_blank"><img src="https://img.gmw.cn/pic/content_logo.png" title="返回光明网首页"/></a> </p>
<p id="contentLiability">[责任编辑:肖春芳]</p>
</div>
</div>

@ -1,7 +1,7 @@
<div id="readability-page-1" class="page"><div width="619">
<p> <a href="http://fakehost/test/../../../index.html">福娘童話集</a> > <a href="http://fakehost/test/../index.html">きょうのイソップ童話</a> &gt; <a href="http://fakehost/test/../itiran/01gatu.htm">1月のイソップ童話</a> &gt; 欲張りなイヌ</p>
<p> <a href="http://fakehost/index.html">福娘童話集</a> > <a href="http://fakehost/index.html">きょうのイソップ童話</a> &gt; <a href="http://fakehost/itiran/01gatu.htm">1月のイソップ童話</a> &gt; 欲張りなイヌ</p>
<p>
<span color="#FF0000" size="+2">元旦のイソップ童話</span></p><p> <img src="http://fakehost/test/../../../gazou/pc_gazou/aesop/aesop052.jpg" alt="よくばりなイヌ" width="480" height="360"></img></p><p> 欲張りなイヌ</p><p> <a href="http://hukumusume.com/douwa/English/aesop/01/01_j.html">ひらがな</a> ←→ <a href="http://hukumusume.com/douwa/English/aesop/01/01_j&amp;E.html">日本語・英語</a> ←→ <a href="http://hukumusume.com/douwa/English/aesop/01/01_E.html">English</a></p>
<span color="#FF0000" size="+2">元旦のイソップ童話</span></p><p> <img src="http://fakehost/gazou/pc_gazou/aesop/aesop052.jpg" alt="よくばりなイヌ" width="480" height="360"></img></p><p> 欲張りなイヌ</p><p> <a href="http://hukumusume.com/douwa/English/aesop/01/01_j.html">ひらがな</a> ←→ <a href="http://hukumusume.com/douwa/English/aesop/01/01_j&amp;E.html">日本語・英語</a> ←→ <a href="http://hukumusume.com/douwa/English/aesop/01/01_E.html">English</a></p>
<table>
<tbody>
<tr>
@ -9,14 +9,14 @@
<table>
<tbody>
<tr>
<td><img src="http://fakehost/test/../../../../366/logo_bana/corner_1.gif" width="7" height="7"></img></td>
<td><img src="http://fakehost/366/logo_bana/corner_1.gif" width="7" height="7"></img></td>
<td>
<span color="#FF0000"><b>おりがみをつくろう</b></span>
</td>
<td>
<span size="-1">(<a href="http://www.origami-club.com/index.html"> おりがみくらぶ</a> より)</span>
</td>
<td><img src="http://fakehost/test/../../../../366/logo_bana/corner_2.gif" width="7" height="7"></img></td>
<td><img src="http://fakehost/366/logo_bana/corner_2.gif" width="7" height="7"></img></td>
</tr>
<tr>
<td colspan="4">
@ -24,7 +24,7 @@
<tbody>
<tr>
<td>
<span size="+2"><a href="http://www.origami-club.com/easy/dogfase/index.html"><img src="http://fakehost/test/../../../gazou/origami_gazou/kantan/dogface.gif" alt="犬の顔の折り紙" width="73" height="51"></img>いぬのかお</a></span>   <a href="http://www.origami-club.com/easy/dog/index.html"><img src="http://fakehost/test/../../../gazou/origami_gazou/kantan/dog.gif" alt="犬の顔の紙" width="62" height="43"></img><span size="+2">いぬ</span></a></td>
<span size="+2"><a href="http://www.origami-club.com/easy/dogfase/index.html"><img src="http://fakehost/gazou/origami_gazou/kantan/dogface.gif" alt="犬の顔の折り紙" width="73" height="51"></img>いぬのかお</a></span>   <a href="http://www.origami-club.com/easy/dog/index.html"><img src="http://fakehost/gazou/origami_gazou/kantan/dog.gif" alt="犬の顔の紙" width="62" height="43"></img><span size="+2">いぬ</span></a></td>
</tr>
</tbody>
</table>

@ -1,4 +1,4 @@
<div id="readability-page-1" class="page"> <span>[<a href="http://fakehost/test/../html/" title="Document search and retrieval page">Docs</a>] [<a href="https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Plaintext version of this document">txt</a>|<a href="http://fakehost/pdf/draft-dejong-remotestorage-04.txt" title="PDF version of this document">pdf</a>] [<a href="https://datatracker.ietf.org/doc/draft-dejong-remotestorage" title="IESG Datatracker information for this document">Tracker</a>] [<a href="mailto:draft-dejong-remotestorage@tools.ietf.org?subject=draft-dejong-remotestorage%20" title="Send email to the document authors">Email</a>] [<a href="http://fakehost/rfcdiff?difftype=--hwdiff&amp;url2=draft-dejong-remotestorage-04.txt" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://fakehost/rfcdiff?url2=draft-dejong-remotestorage-04.txt" title="Side-by-side diff">Diff2</a>] [<a href="http://fakehost/idnits?url=https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Run an idnits check of this document">Nits</a>] </span><br/> <span> </span><br/> <span>Versions: <a href="http://fakehost/test/draft-dejong-remotestorage-00">00</a> <a href="http://fakehost/test/draft-dejong-remotestorage-01">01</a> <a href="http://fakehost/test/draft-dejong-remotestorage-02">02</a> <a href="http://fakehost/test/draft-dejong-remotestorage-03">03</a> <a href="http://fakehost/test/draft-dejong-remotestorage-04">04</a> </span><br/> <span> </span><br/>
<div id="readability-page-1" class="page"> <span>[<a href="http://fakehost/html/" title="Document search and retrieval page">Docs</a>] [<a href="https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Plaintext version of this document">txt</a>|<a href="http://fakehost/pdf/draft-dejong-remotestorage-04.txt" title="PDF version of this document">pdf</a>] [<a href="https://datatracker.ietf.org/doc/draft-dejong-remotestorage" title="IESG Datatracker information for this document">Tracker</a>] [<a href="mailto:draft-dejong-remotestorage@tools.ietf.org?subject=draft-dejong-remotestorage%20" title="Send email to the document authors">Email</a>] [<a href="http://fakehost/rfcdiff?difftype=--hwdiff&amp;url2=draft-dejong-remotestorage-04.txt" title="Inline diff (wdiff)">Diff1</a>] [<a href="http://fakehost/rfcdiff?url2=draft-dejong-remotestorage-04.txt" title="Side-by-side diff">Diff2</a>] [<a href="http://fakehost/idnits?url=https://tools.ietf.org/id/draft-dejong-remotestorage-04.txt" title="Run an idnits check of this document">Nits</a>] </span><br/> <span> </span><br/> <span>Versions: <a href="http://fakehost/test/draft-dejong-remotestorage-00">00</a> <a href="http://fakehost/test/draft-dejong-remotestorage-01">01</a> <a href="http://fakehost/test/draft-dejong-remotestorage-02">02</a> <a href="http://fakehost/test/draft-dejong-remotestorage-03">03</a> <a href="http://fakehost/test/draft-dejong-remotestorage-04">04</a> </span><br/> <span> </span><br/>
<pre>INTERNET DRAFT Michiel B. de Jong
Document: <a href="http://fakehost/test/draft-dejong-remotestorage-04">draft-dejong-remotestorage-04</a> IndieHosters
F. Kooman
@ -692,9 +692,9 @@ unhosted.5apps.com&amp;response_type=token HTTP/1.1
POST /oauth HTTP/1.1
Host: 3pp.io:4439
Origin: <a href="https://3pp.io:4439">https://3pp.io:4439</a>
Origin: <a href="https://3pp.io:4439/">https://3pp.io:4439</a>
Content-Type: application/x-www-form-urlencoded
Referer: <a href="https://3pp">https://3pp</a>.io:4439/oauth/michiel?redirect_uri=https%3\
Referer: <a href="https://3pp/">https://3pp</a>.io:4439/oauth/michiel?redirect_uri=https%3\
A%2F%2Fdrinks-unhosted.5apps.com%2F&amp;scope=myfavoritedrinks%3Arw&amp;client_\
id=https%3A%2F%2Fdrinks-unhosted.5apps.com&amp;response_type=token
@ -727,14 +727,14 @@ XjzzzHNjkd1CJxoQubA1o%3D&amp;token_type=bearer&amp;state=
OPTIONS /storage/michiel/myfavoritedrinks/ HTTP/1.1
Host: 3pp.io:4439
Access-Control-Request-Method: GET
Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Access-Control-Request-Headers: Authorization
Referer: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com/</a>
To which the server can for instance respond:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Methods: GET, PUT, DELETE
Access-Control-Allow-Headers: Authorization, Content-Length, Co\
ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
@ -746,20 +746,20 @@ ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
PUT /storage/michiel/myfavoritedrinks/test HTTP/1.1
Host: 3pp.io:4439
Content-Length: 91
Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
Content-Type: application/json; charset=UTF-8
Referer: <a href="https://drinks-unhosted.5apps.com/?">https://drinks-unhosted.5apps.com/?</a>
If-None-Match: *
{"name":"test","@context":"<a href="http://remotestorage">http://remotestorage</a>.io/spec/modules\
{"name":"test","@context":"<a href="http://remotestorage/">http://remotestorage</a>.io/spec/modules\
/myfavoritedrinks/drink"}
And the server may respond with either a 201 Created or a 200 OK
status:
HTTP/1.1 201 Created
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
ETag: "1382694045000"
<span><a name="section-12.6" href="#section-12.6">12.6</a>. Subsequent PUT</span>
@ -778,7 +778,7 @@ ntent-Type, Origin, X-Requested-With, If-Match, If-None-Match
PUT /storage/michiel/myfavoritedrinks/test HTTP/1.1
Host: 3pp.io:4439
Content-Length: 91
Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
Content-Type: application/json; charset=UTF-8
Referer: <a href="https://drinks-unhosted.5apps.com/?">https://drinks-unhosted.5apps.com/?</a>
@ -790,7 +790,7 @@ e.io/spec/modules/myfavoritedrinks/drink"}
And the server may respond with a 412 Conflict or a 200 OK status:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
ETag: "1382694048000"
<span><a name="section-12.7" href="#section-12.7">12.7</a>. GET</span>
@ -800,7 +800,7 @@ e.io/spec/modules/myfavoritedrinks/drink"}
GET /storage/michiel/myfavoritedrinks/test HTTP/1.1
Host: 3pp.io:4439
Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
Referer: <a href="https://drinks-unhosted.5apps.com/?">https://drinks-unhosted.5apps.com/?</a>
If-None-Match: "1382694045000", "1382694048000"
@ -808,7 +808,7 @@ e.io/spec/modules/myfavoritedrinks/drink"}
And the server may respond with a 304 Not Modified status:
HTTP/1.1 304 Not Modified
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
ETag: "1382694048000"
Or a 200 OK status, plus a response body:
@ -822,7 +822,7 @@ e.io/spec/modules/myfavoritedrinks/drink"}
<span>Internet-Draft remoteStorage December 2014</span>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Content-Type: application/json; charset=UTF-8
Content-Length: 106
ETag: "1382694048000"
@ -836,7 +836,7 @@ ge.io/spec/modules/myfavoritedrinks/drink"}
body:
HTTP/1.1 200 OK
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Content-Type: application/ld+json
Content-Length: 171
ETag: "1382694048000"
@ -851,7 +851,7 @@ charset=UTF-8","Content-Length":106}}}
Not Found status, and no ETag header:
HTTP/1.1 404 Not Found
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
<span><a name="section-12.8" href="#section-12.8">12.8</a>. DELETE</span>
@ -859,7 +859,7 @@ charset=UTF-8","Content-Length":106}}}
DELETE /storage/michiel/myfavoritedrinks/test HTTP/1.1
Host: 3pp.io:4439
Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
Authorization: Bearer j2YnGtXjzzzHNjkd1CJxoQubA1o=
Content-Type: application/json; charset=UTF-8
Referer: <a href="https://drinks-unhosted.5apps.com/?">https://drinks-unhosted.5apps.com/?</a>
@ -876,7 +876,7 @@ charset=UTF-8","Content-Length":106}}}
And the server may respond with a 412 Conflict or a 200 OK status:
HTTP/1.1 412 Conflict
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com">https://drinks-unhosted.5apps.com</a>
Access-Control-Allow-Origin: <a href="https://drinks-unhosted.5apps.com/">https://drinks-unhosted.5apps.com</a>
ETag: "1382694048000"
<span><a name="section-13" href="#section-13">13</a>. Distributed versioning</span>
@ -1126,4 +1126,4 @@ de Jong [Page 22]
</pre><br/> <span><small><small>Html markup produced by rfcmarkup 1.111, available from
<a href="https://tools.ietf.org/tools/rfcmarkup/">https://tools.ietf.org/tools/rfcmarkup/</a>
</small></small></span> </div>
</small></small></span> </div>

@ -71,11 +71,11 @@ RPMs</a>, and it sucks about the same as mplayer, and in about the same ways, th
<ul><i>
Have you considered changing distributions?
</i></ul>
<p> Yes, every single time I try something like this, I very seriously consider <a href="http://fakehost/test/../gruntle/bittybox.html">getting a Mac</a>. </p>
<p> Yes, every single time I try something like this, I very seriously consider <a href="http://fakehost/gruntle/bittybox.html">getting a Mac</a>. </p>
<p> Really the only thing that's stopping me is that I fear the <a href="http://www.xemacs.org/">Emacs situation</a>. </p>
<p> (By which I mean, ``Lack of a usable version thereof.'' No, running RMSmacs inside a terminal window doesn't qualify. Nor does running an X server on the Mac: if I were going to switch, why in the world would I continue inflicting the X Windows Disaster on myself? Wouldn't getting away from that be the <i>whole
point?</i>) </p>
<ul> <span size="-1"> (I understand there is an almost-functional Aqua version of <a href="http://fakehost/test/../hacks/why-cooperation-with-rms-is-impossible.mp3">
<ul> <span size="-1"> (I understand there is an almost-functional Aqua version of <a href="http://fakehost/hacks/why-cooperation-with-rms-is-impossible.mp3">
RMSmacs</a> now. I'll probably check it out at some point, but the problem with <i><a href="http://fakehost/test/lemacs.html">me</a></i> switching from XEmacs to RMSmacs is that it would probably result in another <a href="http://slashdot.org/article.pl?sid=03/01/24/1440207">
Slashdork</a> post, meaning I'd wake up to another 150+ poorly spelled flames in my inbox... I'm hoping for a Aquafied XEmacs, but I know that's not likely to happen any time soon.)</span> </ul>
<p> By the way, the suggestion to switch Linux distrubutions in order to get a single app to work might sound absurd at first. And that's because <a href="http://fakehost/test/linux.html">it is</a>. But I've been saturated with Unix-peanut-gallery effluvia for so long that it no longer even surprises me when every
@ -83,5 +83,5 @@ RPMs</a>, and it sucks about the same as mplayer, and in about the same ways, th
<nobr>simple --</nobr> results in someone suggesting that you either A) patch your kernel or B) change distros. It's inevitable and inescapable, like Hitler. </p>
</blockquote>
<hr/>
<p> <a href="http://fakehost/test/../"><img alt="[ up ]" src="http://fakehost/test/../compass1.gif" onmouseover="this.src=&quot;../compass2.gif&quot;" onmouseout="this.src=&quot;../compass1.gif&quot;"/></a> </p>
<p> <a href="http://fakehost/"><img alt="[ up ]" src="http://fakehost/compass1.gif" onmouseover="this.src=&quot;../compass2.gif&quot;" onmouseout="this.src=&quot;../compass1.gif&quot;"/></a> </p>
</div>

@ -21,7 +21,7 @@
<hr/>
<p>
<em>
Would you like to be part of the Fandom team? <a href="http://fandom.wikia.com/fan-contributor" data-is="trackable" riot-tag="trackable">Join our Fan Contributor Program</a> and share your voice on <a href="http://fandom.wikia.com" data-is="trackable" riot-tag="trackable">Fandom.com</a>! </em>
Would you like to be part of the Fandom team? <a href="http://fandom.wikia.com/fan-contributor" data-is="trackable" riot-tag="trackable">Join our Fan Contributor Program</a> and share your voice on <a href="http://fandom.wikia.com/" data-is="trackable" riot-tag="trackable">Fandom.com</a>! </em>
</p>
</div>

@ -298,7 +298,7 @@
<li id="cite_note-w3counter1-43"><span><b><a href="#cite_ref-w3counter1_43-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.w3counter.com/trends">"Web Browser Market Share Trends"</a>. <i>W3Counter</i>. Awio Web Services LLC<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Web+Browser+Market+Share+Trends&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.w3counter.com%2Ftrends&amp;rft.jtitle=W3Counter&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
</span>
</li>
<li id="cite_note-gs.statcounter.com-44"><span><b><a href="#cite_ref-gs.statcounter.com_44-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://gs.statcounter.com">"Top 5 Browsers"</a>. <i>StatCounter Global Stats</i>. StatCounter<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Top+5+Browsers&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fgs.statcounter.com&amp;rft.jtitle=StatCounter+Global+Stats&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
<li id="cite_note-gs.statcounter.com-44"><span><b><a href="#cite_ref-gs.statcounter.com_44-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://gs.statcounter.com/">"Top 5 Browsers"</a>. <i>StatCounter Global Stats</i>. StatCounter<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Top+5+Browsers&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fgs.statcounter.com&amp;rft.jtitle=StatCounter+Global+Stats&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
</span>
</li>
<li id="cite_note-getclicky1-45"><span><b><a href="#cite_ref-getclicky1_45-0">^</a></b></span> <span><cite><a rel="nofollow" href="http://www.getclicky.com/marketshare/global/web-browsers/">"Web browsers (Global marketshare)"</a>. <i>Clicky</i>. Roxr Software Ltd<span>. Retrieved <span>2012-05-10</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Web+browsers+%28Global+marketshare%29&amp;rft.genre=unknown&amp;rft_id=http%3A%2F%2Fwww.getclicky.com%2Fmarketshare%2Fglobal%2Fweb-browsers%2F&amp;rft.jtitle=Clicky&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
@ -364,7 +364,7 @@
<li id="cite_note-65"><span><b><a href="#cite_ref-65">^</a></b></span> <span><cite>Larabel, Michael. <a rel="nofollow" href="https://www.phoronix.com/scan.php?page=news_item&amp;px=Servo-9-May-2016">"Servo Continues Making Progress For Shipping Components In Gecko, Browser.html"</a>. <i>Phoronix.com</i><span>. Retrieved <span>10 May</span> 2016</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Servo+Continues+Making+Progress+For+Shipping+Components+In+Gecko%2C+Browser.html&amp;rft.aufirst=Michael&amp;rft.aulast=Larabel&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Dnews_item%26px%3DServo-9-May-2016&amp;rft.jtitle=Phoronix.com&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
</span>
</li>
<li id="cite_note-66"><span><b><a href="#cite_ref-66">^</a></b></span> <span><cite><a rel="nofollow" href="https://mozvr.com">"Mozilla VR"</a>. <i>Mozilla VR</i><span>. Retrieved <span>2016-10-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+VR&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fmozvr.com&amp;rft.jtitle=Mozilla+VR&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
<li id="cite_note-66"><span><b><a href="#cite_ref-66">^</a></b></span> <span><cite><a rel="nofollow" href="https://mozvr.com/">"Mozilla VR"</a>. <i>Mozilla VR</i><span>. Retrieved <span>2016-10-27</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.atitle=Mozilla+VR&amp;rft.genre=unknown&amp;rft_id=https%3A%2F%2Fmozvr.com&amp;rft.jtitle=Mozilla+VR&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal"><span>&#160;</span></span>
</span>
</li>
<li id="cite_note-67"><span><b><a href="#cite_ref-67">^</a></b></span> <span><cite><a rel="nofollow" href="https://login.persona.org/"><i>Persona</i></a>, Mozilla</cite><span title="ctx_ver=Z39.88-2004&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3AMozilla&amp;rft.btitle=Persona&amp;rft.genre=book&amp;rft_id=https%3A%2F%2Flogin.persona.org%2F&amp;rft.pub=Mozilla&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook"><span>&#160;</span></span>
@ -402,4 +402,4 @@
<li><a rel="nofollow" href="http://hg.mozilla.org/">Mozilla Mercurial Repository</a></li>
</ul>
</div>
</div>
</div>

Loading…
Cancel
Save