javascript - Hvordan kan jeg sette responsheader på express.js-assets


Jeg trenger å aktivere CORS på skript som leveres av Express. Hvordan kan jeg sette headerne i disse returnerte responsene for public/assets?

Svar #1

Det finnes minst ett middleware på npm for håndtering av CORS i Express: cors. [se @mscdex svar]

Slik setter du egendefinerte svaroverskrifter, fra ExpressJS-dokumentasjonen

res.set(field, [value])

Sett overskriftsfelt til verdi

res.set('Content-Type', 'text/plain');

eller sende et objekt for å sette flere felt samtidig.

res.set({
  'Content-Type': 'text/plain',
  'Content-Length': '123',
  'ETag': '12345'
})

Alias som

res.header(field, [value])

Svar #2

Dette er så irriterende.

Ok, hvis noen fortsatt har problemer eller bare ikke vil legge til et annet bibliotek. Alt du trenger å gjøre er å plassere denne mellomvarekoden før rutene dine.

Cors-eksempel

app.use((req, res, next) => {
    res.append('Access-Control-Allow-Origin', ['*']);
    res.append('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
    res.append('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

// Express routes
app.get('/api/examples', (req, res)=> {...});

Svar #3

Kort svar:

  • res.setHeaders - kaller den innfødte Node.js-metoden

  • res.set - setter overskrifter

  • res.headers - et alias for res.set

Svar #4

Du kan gjøre dette ved å bruke cors. cors vil håndtere ditt CORS-svar

var cors = require('cors')

app.use(cors());

Svar #5

Svar fra @klode er riktig.

Du skal imidlertid sette en annen responsoverskrift for å gjøre overskriften din tilgjengelig for andre.

Eksempel :

Først legger du til 'page-size' i responsheaderen

response.set('page-size', 20);

Deretter trenger du bare å eksponere hodet ditt

response.set('Access-Control-Expose-Headers', 'page-size')

Svar #6

service.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
    next();
  });

Relaterte artikler