Skip to content

Commit 6979257

Browse files
author
jin
committed
$mol_offline: fixed cors
1 parent 5a2c887 commit 6979257

File tree

1 file changed

+24
-15
lines changed

1 file changed

+24
-15
lines changed

offline/offline.web.ts

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ namespace $ {
2929
self.addEventListener( 'fetch' , ( event : any )=> {
3030

3131
const request = event.request as Request
32+
// console.log( 'FETCH', request.mode, request.cache, request.url )
3233

3334
if( blacklist.has( request.url.replace( /^https?:/, '' ) ) ) {
3435
return event.respondWith(
@@ -47,20 +48,9 @@ namespace $ {
4748
if( /\?/.test( request.url ) ) return
4849
if( request.cache === 'no-store' ) return
4950

50-
const fetch_data = () => fetch( request ).then( response => {
51+
const fetch_data = () => fetch( new Request( request, { credentials: 'omit' } ) ).then( response => {
5152
if (response.status !== 200) return response
5253

53-
const headers = new Headers( response.headers )
54-
headers.set( "Cross-Origin-Embedder-Policy", "require-corp" )
55-
headers.set( "Cross-Origin-Opener-Policy", "same-origin" )
56-
headers.set( "$mol_offline", "" )
57-
58-
response = new Response( response.body, {
59-
status: response.status,
60-
statusText: response.statusText,
61-
headers,
62-
});
63-
6454
event.waitUntil(
6555
caches.open( '$mol_offline' ).then(
6656
cache => cache.put( request , response )
@@ -70,9 +60,28 @@ namespace $ {
7060
return response.clone()
7161
} )
7262

63+
const enrich = ( response: Response )=> {
64+
65+
// console.log( 'ENRICH', response.status, response.url )
66+
if( !response.status ) return response
67+
68+
const headers = new Headers( response.headers )
69+
headers.set( "$mol_offline", "" )
70+
headers.set( "Cross-Origin-Embedder-Policy", "credentialless" )
71+
headers.set( "Cross-Origin-Resource-Policy", "cross-origin" )
72+
headers.set( "Cross-Origin-Opener-Policy", "same-origin" )
73+
74+
return new Response( response.body, {
75+
status: response.status,
76+
statusText: response.statusText,
77+
headers,
78+
});
79+
80+
}
81+
7382
const fresh = request.cache === 'force-cache' ? null : fetch_data()
7483

75-
if (fresh) event.waitUntil( fresh )
84+
if (fresh) event.waitUntil( fresh.then( enrich ) )
7685

7786
event.respondWith(
7887
caches.match( request ).then(
@@ -92,10 +101,10 @@ namespace $ {
92101
cloned.headers.set( '$mol_offline_remote_status', message )
93102
return cloned
94103
})
95-
: fresh
104+
: fresh!
96105
)
97106
: ( cached || fresh || fetch_data() )
98-
)
107+
).then( enrich )
99108
)
100109

101110
})

0 commit comments

Comments
 (0)