I'm trying to pass a cookie (which was set in the browser (e. g. Edge V102.0.1245.44 or Firefox V89.0.2)) by an axios request to another server (which is on the same host = localhost). I still tried a lot of different settings, but none did work. The cookie seems to be existing in the express request (http://localhost:3000/request
) req.headers.cookie
.
See:
Make Axios send cookies in its requests automatically
node.js axios request with cookies
Set cookies for cross origin requests
How to set cookies when send a request in node ?
Here is an example what I tried:
Send request http://localhost:3000/request
, cookie is set before by http://localhost:3000/setcookie
:
const express = require('express')
import { Request, Response } from "express"
const axios = require('axios')
const dayjs = require('dayjs')
const app = express()
const port = 3000
app.get('/setcookie', (req: Request, res: Response) => {
const cookieName = 'cookie-name'
const cookieValue = dayjs().format('HH:mm:ss DD.MM.YYYY')
res.cookie(cookieName, cookieValue);
res.send(`Cookie successfully set: ${cookieName}=${cookieValue}`);
});
let content = `Hello world`
app.get('/', (req: Request, res: Response) => {
console.log(req.cookies)
console.log(req.headers.cookie)
res.send(content)
})
app.get('/request', async (req: Request, res: Response) => {
console.log(req.cookies)
console.log(req.headers.cookie)
let url = 'http://localhost:2999'
try {
const result = await axios.get(url, { withCredentials: true })
console.log(result.headers)
}
catch (error) {
console.log(error)
}
res.send(true)
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
Request is send to:
const express = require('express')
import { Request, Response } from "express"
import cors from 'cors'
const app = express()
app.use(cors({
credentials: true,
origin: "http://localhost",
allowedHeaders: [
'Content-Type',
'Authorization',
],
}));
const port = 2999
app.get('/', (req: Request, res: Response) => {
console.log(req.headers)
console.log(req.cookies)
res.send(true)
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
Do you need more information?