JS service-worker and cache storage API with http 302 - how to cache the redirect?

183 views Asked by At

I have a webpage, serverd via https from Tomcat, with serviceworker according to examples for fetching a resource and store it in the cache. If Tomcat is not running, the page is served from the cache storage - so far so good.
My Tomcat configuration contains the redirectPort attribute to redirect http to https. The problem I have: When Tomcat is not running and my webpage is accessed via http, browser shows: Connection refused since the http 302 redirect is not stored in the cache. How I could achieve that?

1

There are 1 answers

1
Ben Kelly On

Unfortunately service workers require https for safety, so you cannot have a service worker intercept an http request.

If you would like to force browsers to visit your page in https you could enable HSTS:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security

The HSTS list can be preloaded in the browser allowing it to work offline. Note, however, you need to be careful when enabling HSTS as if you make a mistake it can be difficult to correct.

Alternatively browsers are slowly moving towards loading https by default unless the user explicitly types http. For example:

https://blog.chromium.org/2021/03/a-safer-default-for-navigation-https.html