Vladimir Jovanović
Vladimir Jovanović

Reputation: 5561

Cannot set headers for Express.js app (CORS)

No matter what I try to use to set the headers it simply won't work.

The server side needs to send the response headers like this, after accepting the POST request from Frontend.

server.js

app.post('/register', (req, res) => {
   res.set({
       'Content-Type': 'application/json',
       'Access-Control-Allow-Origin': '*'
   });
   res.send('string');
   res.end();
}

The res.set() function was not the only function I tried to use.

I tried with:

res.writeHead(201, {'Access-Control-Allow-Origin': '*'}) - doesn't work

res.setHeader('Access-Control-Allow-Origin', '*') - nope

res.headers() - also doesn't work

It says here that it goes like this: How can I set response header on express.js assets but the answer doesn't work for me.

No matter what I tried, the server just won't respond with the CORS enabled header and I need that header property. What am I doing wrong?

Upvotes: 1

Views: 2164

Answers (2)

Mladen Ilić
Mladen Ilić

Reputation: 1765

The Access-Control-Expose-Headers response header indicates which headers can be exposed as part of the response by listing their names.

You can read more about it here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

res.set('Access-Control-Expose-Headers', 'Access-Control-Allow-Origin, <any-other-custom-header>, ...');

Upvotes: 0

Pat Needham
Pat Needham

Reputation: 5928

Try using the cors module: https://www.npmjs.com/package/cors

var cors = require('cors')

...

app.use(cors())

Upvotes: 3

Related Questions