Add external <script type=speculationrules>#11697
Add external <script type=speculationrules>#11697vickiez wants to merge 12 commits intowhatwg:mainfrom
Conversation
0f1c473 to
59d995a
Compare
noamr
left a comment
There was a problem hiding this comment.
Thanks for working on this! See initial comments.
source
Outdated
| data-x="concept-request-url">URL</span> is <var>url</var>, <span | ||
| data-x="concept-request-client">client</span> is <var>document</var>'s <span>relevant settings | ||
| object</span>, <span data-x="concept-request-destination">destination</span> is "<code | ||
| data-x="">speculationrules</code>", and <span data-x="concept-request-mode">mode</span> is |
There was a problem hiding this comment.
This destination needs to be defined in the fetch spec.
There was a problem hiding this comment.
There's a change in progress here: whatwg/fetch#1841. Happy to help with that one, is there a proper order for merging the changes across specs?
There was a problem hiding this comment.
Merging them as close together as possible provided they are both unblocked and generally agreed upon is fine. But regarding this PR: is there cross-browser interest in this feature overall? The PR template is pretty scant.
There was a problem hiding this comment.
Filled in the PR template with implementation bugs and just created position requests here:
Support external <script type=speculationrules> · Issue #1343 · mozilla/standards-positions
Support external <script type=speculationrules> · Issue #604 · WebKit/standards-positions
There was a problem hiding this comment.
Also for some context - this change was meant to be included in the base speculation rules spec change to achieve completeness. I was planning on merging it into Domenic's branch, but his change was merged into HTML first. See the comment here - #11123 (comment)
|
See #11697 (comment), but just so the sentiment doesn't get lost in that thread, let me ask here: is there cross-browser support for this? I'm asking because the PR template is a bit bare and I'm not sure where other folks stand on this PR, although I'm happy to review it. |
|
For CSP, there are three conceptually separate things being discussed in the context of external speculation rules:
Do we want to settle all of them before implementing (or shipping?) external I think applying |
|
Proceeding in steps makes sense to me, although it probably makes sense to have an idea of the plan so that decisions we take first don't block us later on. For [1] and [2], if we want a new CSP directive that applies to speculationrules, defining it right away might make more sense than enforcing script-src temporarily and later changing it. Unless we decide that the new directive will fall back to script-src if not present (which could make perfectly sense), in which case doing [1] first and later [2] sounds good to me. The discussion on [3] can come later. If the only reason for exempting headers is this one, then a new directive could solve that problem, too. |
|
Thank you for clarifying the issues @hiroshige-g, and +1 to @antosart on proceeding incrementally with a plan in mind. I think it makes sense to use script-src as a fallback to the new directive; sounds like developers did expect CSP to apply to script elements and it already takes effect for inline scripts. This is how I see the plan: After [1]:
After [2] introduces a new
For [3], the header/script discrepancy can be resolved as part of [2] since a dedicated directive avoids the strict-CSP problem that motivated the header exemption in the first place. So the plan would be:
Does that align with everyone's thinking? |
Why not having both resolve in the same way as |
I agree it is simpler to have the same fallback chain. I was thinking of the friction that motivated header CSP exemption in https://chromestatus.com/feature/5123809745829888, but sites will be able to avoid breakage from strict script-src policies by using the new After [2] introduces a new speculationrules directive:
|
Add external <script type="speculationrules">
Allows a speculation rules script element to have a src pointing to a
file of speculation rules, enabling developers to easily reuse a set of
speculation rules across HTML documents.
WICG/nav-speculation#348
Spec changes:
Add a row for external speculation rules in the attributes table of
4.12.1 The script element
During prepare the script element, handle the case where
srccontent attribute is present and
typeis"speculationrules"Define a "fetch speculation rules" algorithm to be used by both the
external script and 7.6.3 The
Speculation-Rulesheader sections.(See WHATWG Working Mode: Changes for more details.)
/scripting.html ( diff )
/speculative-loading.html ( diff )
/webappapis.html ( diff )