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-metodenres.set- setter overskrifterres.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();
});