Skip to content

Commit 7356349

Browse files
First attempt at placing the Origin header under full control of "unsafe-no-cors" mode
1 parent 9a4f343 commit 7356349

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

fetch.bs

+18-6
Original file line numberDiff line numberDiff line change
@@ -1808,7 +1808,7 @@ Unless stated otherwise, it is "<code>no-cors</code>".
18081808
<a>service-workers mode</a> "<code>all</code>". However, the request will not be required to
18091809
pass a <a>cross-origin resource policy check</a> or to test if
18101810
<a>Cross-Origin-Embedder-Policy allows credentials</a>. Upon success a fetch will
1811-
return a <a>cors filtered response</a>.
1811+
return a <a>basic filtered response</a>.
18121812

18131813
<p class=warning> Using <a for=/>request</a> <a for=request>mode</a> "<code>unsafe-no-cors</code>"
18141814
is even more discouraged and unsafe than "<code>no-cors</code>". Any use of this mode must be
@@ -1826,6 +1826,12 @@ Unless stated otherwise, it is "<code>no-cors</code>".
18261826

18271827
</div>
18281828

1829+
<p>A <a for=/>request</a> has an associated
1830+
<dfn for=request>omit origin flag</dfn>. Unless stated otherwise it is unset.
1831+
1832+
<p class="note no-backref">The <a for=request>omit origin flag</a> only has effect when
1833+
<a for=/>request</a>'s <a for=request>mode</a> is "<code>unsafe-no-cors</code>".
1834+
18291835
<p>A <a for=/>request</a> has an associated
18301836
<dfn id=use-cors-preflight-flag export for=request>use-CORS-preflight flag</dfn>. Unless stated
18311837
otherwise, it is unset.
@@ -3095,8 +3101,9 @@ given a <a for=/>request</a> <var>request</var>, run these steps:
30953101
with <var>request</var>.
30963102

30973103
<li><p>If <var>request</var>'s <a for=request>response tainting</a> is "<code>cors</code>" or
3098-
<var>request</var>'s <a for=request>mode</a> is "<code>websocket</code>", then
3099-
<a for="header list">append</a> (`<code>Origin</code>`, <var>serializedOrigin</var>) to
3104+
<var>request</var>'s <a for=request>mode</a> is "<code>websocket</code>" or
3105+
"<code>unsafe-no-cors</code>", then <a for="header list">append</a>
3106+
(`<code>Origin</code>`, <var>serializedOrigin</var>) to
31003107
<var>request</var>'s <a for=request>header list</a>.
31013108

31023109
<li>
@@ -4064,7 +4071,9 @@ the request.
40644071
<a for="environment settings object">global object</a> is a {{Window}} object; otherwise
40654072
"<code>no-window</code>".
40664073

4067-
<li><p>If <var>request</var>'s <a for=request>origin</a> is "<code>client</code>", then set
4074+
<li><p>If <var>request</var>'s <a for=request>origin</a> is "<code>client</code>" and either
4075+
<var>request</var>'s <a for=request>mode</a> is not "<code>unsafe-no-cors</code>" or
4076+
and <var>request</var>'s <a for=request>omit origin flag</a> is unset, then set
40684077
<var>request</var>'s <a for=request>origin</a> to <var>request</var>'s <a for=request>client</a>'s
40694078
<a for="environment settings object">origin</a>.
40704079

@@ -4091,7 +4100,8 @@ the request.
40914100
<ol>
40924101
<li><p><a for=/>Assert</a>: <var>request</var>'s <a for=request>origin</a> is <a>same origin</a>
40934102
with <var>request</var>'s <a for=request>client</a>'s
4094-
<a for="environment settings object">origin</a>.
4103+
<a for="environment settings object">origin</a> or <var>request</var>'s <a for=request>mode</a>
4104+
is "<code>unsafe-no-cors</code>".
40954105

40964106
<li><p>Let <var>onPreloadedResponseAvailable</var> be an algorithm that runs the following
40974107
step given a <a for=/>response</a> <var>response</var>: set <var>fetchParams</var>'s
@@ -5180,7 +5190,9 @@ run these steps:
51805190
<var>httpRequest</var>'s <a for=request>header list</a>.
51815191
</ol>
51825192

5183-
<li><p><a>Append a request `<code>Origin</code>` header</a> for <var>httpRequest</var>.
5193+
<li>If either <var>request</var>'s <a for=request>mode</a> is not "<code>unsafe-no-cors</code>"
5194+
or <var>request</var>'s <a for=request>omit origin flag</a> is not set,
5195+
<p><a>append a request `<code>Origin</code>` header</a> for <var>httpRequest</var>.
51845196

51855197
<li><p><a abstract-op lt="append the Fetch metadata headers for a request">Append the Fetch metadata headers for <var>httpRequest</var></a>.
51865198
[[!FETCH-METADATA]]

0 commit comments

Comments
 (0)