sec-fetch-headers.https.html (2496B)
1 <!DOCTYPE html> 2 <title>Prefetch request's Sec-Fetch-* request headers</title> 3 <meta name="timeout" content="long"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="/common/dispatcher/dispatcher.js"></script> 7 <script src="/common/utils.js"></script> 8 <script src="../resources/utils.js"></script> 9 <script src="resources/utils.sub.js"></script> 10 11 <script> 12 "use strict"; 13 14 setup(() => assertSpeculationRulesIsSupported()); 15 16 // https://wicg.github.io/nav-speculation/prefetch.html#create-a-navigation-request 17 18 promise_test(async t => { 19 const agent = await spawnWindow(t); 20 const nextUrl = agent.getExecutorURL({ page: 2 }); 21 await agent.forceSinglePrefetch(nextUrl); 22 await agent.navigate(nextUrl); 23 24 const headers = await agent.getRequestHeaders(); 25 assert_prefetched(headers, "must be prefetched"); 26 assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest"); 27 }, 'Sec-Fetch-Dest'); 28 29 promise_test(async t => { 30 const agent = await spawnWindow(t); 31 const nextUrl = agent.getExecutorURL({ page: 2 }); 32 await agent.forceSinglePrefetch(nextUrl); 33 await agent.navigate(nextUrl); 34 35 const headers = await agent.getRequestHeaders(); 36 assert_prefetched(headers, "must be prefetched"); 37 assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode"); 38 }, 'Sec-Fetch-Mode'); 39 40 promise_test(async t => { 41 const agent = await spawnWindow(t); 42 const nextUrl = new URL('/common/redirect.py', location.href); 43 const finalUrl = agent.getExecutorURL({ page: 2 }); 44 nextUrl.searchParams.set('location', finalUrl); 45 await agent.forceSinglePrefetch(nextUrl); 46 await agent.navigate(nextUrl, {expectedDestinationUrl: finalUrl}); 47 48 const headers = await agent.getRequestHeaders(); 49 assert_prefetched(headers, "must be prefetched"); 50 assert_equals(headers['sec-fetch-dest'], "document", "Sec-Fetch-Dest"); 51 }, 'Sec-Fetch-Dest with redirects'); 52 53 promise_test(async t => { 54 const agent = await spawnWindow(t); 55 const nextUrl = new URL('/common/redirect.py', location.href); 56 const finalUrl = agent.getExecutorURL({ page: 2 }); 57 nextUrl.searchParams.set('location', finalUrl); 58 await agent.forceSinglePrefetch(nextUrl); 59 await agent.navigate(nextUrl, {expectedDestinationUrl: finalUrl}); 60 61 const headers = await agent.getRequestHeaders(); 62 assert_prefetched(headers, "must be prefetched"); 63 assert_equals(headers['sec-fetch-mode'], "navigate", "Sec-Fetch-Mode"); 64 }, 'Sec-Fetch-Mode with redirects'); 65 </script>