0

I realized that a response header would be present in the Network tab of the Chrome console even if that header wasn't set in express. I found this answer suggesting disallowing caching. What confuses me is why the cached response is still used even if a request is made to the server.

request from react

const baseURL = 'http://localhost:3001'
const axiosClient = axios.create({
  baseURL,
  withCredentials: true,
})

let accessToken

axiosClient.interceptors.response.use((response) => {
  const { data, headers } = response
  //store access token in memory
  accessToken = headers['x-access-token']
  console.log(accessToken)
  // if (accessToken) axiosClient.defaults.headers['X-Access-Token'] = accessToken
  return data
})

async me() {
    return await axiosClient.get('/auth/me')
  }

request reaches route

router.get('/me', (req, res) => {
  // res.set('X-Access-Token', 'test 4')
  res.send('me')
})

vscode debug console

res.getHeaders()
{x-powered-by: 'Express', access-control-allow-origin: 'http://localhost:3000', vary: 'Origin', access-control-allow-credentials: 'true', access-control-expose-headers: 'X-Access-Token'}
req.headers
{host: 'localhost:3001', connection: 'keep-alive', sec-ch-ua: '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"', accept: 'application/json, text/plain, */*', sec-ch-ua-mobile: '?0', …}

old token still appears in chrome

Since Chrome made a request to the server instead of just using the cached response (First, since there is no need to deliver the request to the origin server, then the closer the client and cache are, the faster the response will be), why isn't Chrome using the received response where the token header isn't present?

BPDev
  • 397
  • 1
  • 9
  • I doubt it's a cached response. You may try to run `chrome --user-data-dir=C:/some/temp/profile` – 273K Jan 04 '23 at 03:15

0 Answers0