Fix Sec-Fetch-Site header (#37277)

While working on #37209 I discovered that the header was computed
incorrectly. After carefully reading the specification, I realized that
the link in the spec was wrong and we were missing the fact that for
host-domains, we should operate on the registrable domain.

Additionally, the same-site call was missing the negation.

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This commit is contained in:
Tim van der Lippe 2025-06-07 18:57:29 +02:00 committed by GitHub
parent a625420b23
commit c808ff7666
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
36 changed files with 41 additions and 444 deletions

View file

@ -1,12 +1,6 @@
[fetch-preflight.https.sub.any.html]
[Cross-site fetch with preflight: sec-fetch-site]
expected: FAIL
[fetch-preflight.https.sub.any.worker.html]
[Cross-site fetch with preflight: sec-fetch-site]
expected: FAIL
[fetch-preflight.https.sub.any.serviceworker.html]
expected: ERROR

View file

@ -1,12 +1,6 @@
[fetch.https.sub.any.html]
[Cross-site fetch: sec-fetch-site]
expected: FAIL
[fetch.https.sub.any.worker.html]
[Cross-site fetch: sec-fetch-site]
expected: FAIL
[fetch.https.sub.any.sharedworker.html]
expected: ERROR

View file

@ -49,6 +49,3 @@
[sec-fetch-storage-access - Not sent to non-trustworthy cross-site destination]
expected: FAIL
[sec-fetch-storage-access - Not sent to non-trustworthy same-site destination]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade - no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade - no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent) - no attributes]
expected: FAIL

View file

@ -1,27 +1,3 @@
[element-audio.https.sub.html]
[sec-fetch-site - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-storage-access - Cross-site, no attributes]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent), no attributes]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL

View file

@ -1,49 +1,4 @@
[element-img.https.sub.html]
[sec-fetch-site - src - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - src - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - src - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - src - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - src - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - src - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - src - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - srcset - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - src - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-storage-access - src - Cross-site, no attributes]
expected: FAIL

View file

@ -5,12 +5,6 @@
[sec-fetch-site - srcset - HTTPS upgrade, no attributes]
expected: FAIL
[sec-fetch-site - src - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - srcset - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - src - HTTPS downgrade (header not sent), no attributes]
expected: FAIL

View file

@ -1,25 +1,4 @@
[element-link-prefetch.https.optional.sub.html]
[sec-fetch-site - Cross-site no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site no attributes]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site no attributes]
expected: FAIL
[sec-fetch-dest attributes: as=audio]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent) no attributes]
expected: FAIL

View file

@ -5,29 +5,20 @@
[sec-fetch-site - Same site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-user]
expected: FAIL
[sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Same-Origin -> Same-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Same Origin]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL

View file

@ -1,67 +1,4 @@
[element-picture.https.sub.html]
[sec-fetch-site - img[src\] - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-storage-access - img[src\] - Cross-site, no attributes]
expected: FAIL

View file

@ -8,15 +8,6 @@
[sec-fetch-site - source[srcset\] - HTTPS upgrade, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - img[srcset\] - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - source[srcset\] - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - img[src\] - HTTPS downgrade (header not sent), no attributes]
expected: FAIL

View file

@ -1,45 +1,9 @@
[element-script.https.sub.html]
[sec-fetch-site - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - Cross-site, attributes: type=module]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, attributes: type=module]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin, attributes: type=module]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site, attributes: type=module]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site, attributes: type=module]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site, attributes: type=module]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site, attributes: type=module]
expected: FAIL
[sec-fetch-storage-access - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect, attributes: type=module]
expected: FAIL
[sec-fetch-site - Same-Site -> Same Origin, attributes: type=module]
expected: FAIL

View file

@ -5,12 +5,6 @@
[sec-fetch-site - HTTPS upgrade, attributes: type=module]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, attributes: type=module]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent), no attributes]
expected: FAIL

View file

@ -1,27 +1,3 @@
[element-video.https.sub.html]
[sec-fetch-site - Cross-site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site, no attributes]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-storage-access - Cross-site, no attributes]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, no attributes]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent), no attributes]
expected: FAIL

View file

@ -1,24 +1,3 @@
[fetch.https.sub.html]
[sec-fetch-site - Cross-site, init: mode=no-cors]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect, init: mode=no-cors]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin, init: mode=no-cors]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site, init: mode=no-cors]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site, init: mode=no-cors]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site, init: mode=no-cors]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site, init: mode=no-cors]
expected: FAIL
[sec-fetch-storage-access - Cross-site, init: mode=no-cors, credentials=include]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade, no init]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade, no init]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent), no init]
expected: FAIL

View file

@ -5,29 +5,20 @@
[sec-fetch-site - Same site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-user]
expected: FAIL
[sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Same-Origin -> Same-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Same Origin]
expected: FAIL

View file

@ -4,6 +4,3 @@
[sec-fetch-site - HTTPS upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL

View file

@ -1,21 +1,6 @@
[script-module-import-dynamic.https.sub.html]
[sec-fetch-site - Cross-site]
[sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site]
[sec-fetch-site - Same-Site -> Same Origin]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL

View file

@ -1,21 +1,6 @@
[script-module-import-static.https.sub.html]
[sec-fetch-site - Cross-site]
[sec-fetch-site - Same-Origin -> Same-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site]
[sec-fetch-site - Same-Site -> Same Origin]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL

View file

@ -26,6 +26,3 @@
[sec-fetch-user - no options - updating]
expected: NOTRUN
[sec-fetch-site - Same origin, no options - registration]
expected: FAIL

View file

@ -11,18 +11,6 @@
[sec-fetch-site - HTTPS upgrade - location.replace]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade - location]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade - location.href]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade - location.assign]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade - location.replace]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent) - location]
expected: FAIL

View file

@ -1,24 +1,3 @@
[worker-dedicated-importscripts.https.sub.html]
[sec-fetch-site - Cross-site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site -> Same-Origin redirect]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same Origin]
expected: FAIL
[sec-fetch-site - Cross-Site -> Same-Site]
expected: FAIL
[sec-fetch-site - Cross-Site -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Origin -> Cross-Site]
expected: FAIL
[sec-fetch-site - Same-Site -> Cross-Site]
expected: FAIL
[sec-fetch-storage-access - Cross-site]
expected: FAIL

View file

@ -2,8 +2,5 @@
[sec-fetch-site - HTTPS upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade-upgrade]
expected: FAIL
[sec-fetch-site - HTTPS downgrade (header not sent)]
expected: FAIL

View file

@ -1,25 +1,7 @@
[preload.https.sub.html]
[preload fetch www.not-web-platform.test:8443: sec-fetch-site]
expected: FAIL
[preload image www.not-web-platform.test:8443: sec-fetch-site]
expected: FAIL
[preload style www.not-web-platform.test:8443: sec-fetch-dest]
expected: FAIL
[preload style www.not-web-platform.test:8443: sec-fetch-site]
expected: FAIL
[preload font www.not-web-platform.test:8443: sec-fetch-site]
expected: FAIL
[preload script www.not-web-platform.test:8443: sec-fetch-site]
expected: FAIL
[preload track www.not-web-platform.test:8443: sec-fetch-site]
expected: FAIL
[preload style www.web-platform.test:8443: sec-fetch-dest]
expected: FAIL

View file

@ -21,9 +21,6 @@
[Https downgrade-upgrade script => No headers: sec-fetch-mode]
expected: FAIL
[Https downgrade-upgrade top level navigation: sec-fetch-site]
expected: FAIL
[Https downgrade-upgrade stylesheet]
expected: NOTRUN

View file

@ -1,3 +0,0 @@
[style.https.sub.html]
[Cross-Site style: sec-fetch-site]
expected: FAIL