[w3c/ServiceWorker] Loading service worker behind authentication (Issue #1648)

I have developed a javascript application with a custom service worker and facing a problem fetching the service worker file behind authentication.

My application is deployed behind a cookie based authentication (after login, the user has a cookie which is checked by every request). This is fine for for fetching all resources, except the service-worker file, which the browser doesn't doesn't send any cookies.

Here is miminal example reproducing my issue:

**backend: index.js**
```
// Service worker file
app.get('/test.js', (req,res) => {
    if(req.cookies.token != null) {
        res.sendFile('./public/test.js')
    }
    else {
        res.sendStatus(401)
    }
})

// Index page
app.get('/', (req, res) => {
  
  // initial login check goes here 

  res.cookie('token',"<user token>").sendFile('./public/index.html')
})
```
**frontend: index.html**
```
<body>
    <h1>Test</h1>
    
    // Doesn't work with the auth
    <script>
        const registration = await navigator.serviceWorker.register('test.js')
        console.log(registration)
    </script>
    // Works with the auth
    <script src="test2.js"></script>
</body>
```
When the request is made, the browser doesn't attach any cookie information:

![Chrome dev tools](https://i.stack.imgur.com/2A5cq.png)

Why doesn't the browser treat the service-worker request as everything else? Am I missing a flag similiar to fetch credentials option?

-- 
Reply to this email directly or view it on GitHub:
https://github.com/w3c/ServiceWorker/issues/1648
You are receiving this because you are subscribed to this thread.

Message ID: <w3c/ServiceWorker/issues/1648@github.com>

Received on Sunday, 19 June 2022 10:25:33 UTC