mirror of
https://codeberg.org/kbruen/kai.infotren.git
synced 2025-02-22 17:19:37 +02:00
Enable service worker for Safari
For future reference: the preflight request must return these headers: Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, HEAD, OPTIONS Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, Pragma, Cache-Control Otherwise, Safari will refuse requests made inside a service worker reporting a preflight check fail.
This commit is contained in:
parent
9d4442de45
commit
c2ea04de4b
2 changed files with 32 additions and 22 deletions
|
@ -15,11 +15,9 @@ const registerServiceWorker = async () => {
|
|||
console.log('Service worker active');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(`Registration failed with ${error}`);
|
||||
console.error('Registration failed', error);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
|
||||
registerServiceWorker();
|
||||
}
|
||||
registerServiceWorker();
|
||||
|
|
12
sw.js
12
sw.js
|
@ -124,6 +124,7 @@ const cacheFirst = async ({ request, preloadResponsePromise, refreshAnyway }) =>
|
|||
}
|
||||
|
||||
// Next try to use (and cache) the preloaded response, if it's there
|
||||
try {
|
||||
if (preloadResponsePromise) {
|
||||
const preloadResponse = await preloadResponsePromise
|
||||
if (preloadResponse && preloadResponse.ok) {
|
||||
|
@ -135,6 +136,11 @@ const cacheFirst = async ({ request, preloadResponsePromise, refreshAnyway }) =>
|
|||
console.log('[cf] got not ok preloadResponse, ignoring', preloadResponse)
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// Ignore as preload isn't necessarily important
|
||||
console.error('[cf] preload response error', e)
|
||||
}
|
||||
|
||||
// Next try to get the resource from the network
|
||||
const responseFromNetwork = await fetch(request)
|
||||
|
@ -153,6 +159,7 @@ const cacheFirst = async ({ request, preloadResponsePromise, refreshAnyway }) =>
|
|||
|
||||
const networkFirst = async ({ request, preloadResponsePromise }) => {
|
||||
// First try to use (and cache) the preloaded response, if it's there
|
||||
try {
|
||||
if (preloadResponsePromise) {
|
||||
const preloadResponse = await preloadResponsePromise
|
||||
if (preloadResponse && preloadResponse.ok) {
|
||||
|
@ -164,6 +171,11 @@ const networkFirst = async ({ request, preloadResponsePromise }) => {
|
|||
console.log('[nf] got not ok preloadResponse, ignoring', preloadResponse)
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
// Ignore as preload isn't necessarily important
|
||||
console.error('[nf] preload response error', e)
|
||||
}
|
||||
|
||||
// Next try to get the resource from the network
|
||||
let responseFromNetwork
|
||||
|
|
Loading…
Add table
Reference in a new issue