Bug 245866

Summary: Safari 16 issuing requests twice with navigationPreload enabled
Product: WebKit Reporter: Alex <vagulisal500>
Component: Service WorkersAssignee: Nobody <webkit-unassigned>
Status: RESOLVED DUPLICATE    
Severity: Critical CC: achristensen, ap, webkit-bug-importer, youennf
Priority: P2 Keywords: InRadar
Version: Safari 16   
Hardware: iPhone / iPad   
OS: iOS 16   

Description Alex 2022-09-30 00:16:56 PDT
When I using navigationPreload.enable(), Safari 16.x on macOs and all browser on ios16.x make two requests
Here is my code: 

const uri = 'https://uri';

self.addEventListener('activate', event => {

    event.waitUntil((async () => {
        if (self.registration.navigationPreload) {
            await self.registration.navigationPreload.enable();
        }
    })());
});

self.addEventListener('fetch', (event) => {
    const request = event.request;
    if (request.mode === 'navigate' && request.destination !== 'iframe') {
        event.respondWith((async () => {
            try {
                return await event.preloadResponse || await fetch(request);
            } catch (e) {
                const response = await fetch(uri);
                if (response.ok) {
                    const text = await response.text();
                    const body = decode(text);
                    return new Response(body, { headers: { 'Content-Type': 'text/html' } });
                }
            }
        })());
    }
});

function decode(str) {
    return decodeURIComponent(
        some code
    );
}
Comment 1 Alex 2022-09-30 08:02:50 PDT
this is minimal reproducer

self.addEventListener('activate', event => {
    event.waitUntil((async () => {
        if (self.registration.navigationPreload) {
            await self.registration.navigationPreload.enable();
        }
    })());
});

self.addEventListener('fetch', (event) => {
    const request = event.request;
        event.respondWith((async () => {
            return await event.preloadResponse || await fetch(request);
    })());
});
Comment 2 Radar WebKit Bug Importer 2022-09-30 15:06:33 PDT
<rdar://problem/100639064>
Comment 3 youenn fablet 2022-10-03 01:25:29 PDT
Thanks for the report.
I believe this was fixed in https://bugs.webkit.org/show_bug.cgi?id=245788.
Comment 4 youenn fablet 2022-10-03 01:25:39 PDT

*** This bug has been marked as a duplicate of bug 245788 ***