промежуточное ПО:
const enableCors = (req, res, next) => {
res.set({
'Access-Control-Allow-Origin': 'http://127.0.0.1:5500',
'Access-Control-Allow-Headers': 'content-type'
});
next();
};
//this works from postman as well as from browser
Вышеуказанное промежуточное ПО прекрасно работает при добавлении следующим образом app.use(enableCors);
, но я хочу, чтобы оно работало с указанным c маршрутом, и я использую его следующим образом:
app.post('/resource', enableCors, (req, res, next)=>{
res.json({msg:'success'});
});
//this only works from postman
Я почти уверен, что это связано с тем, как работают предполетные запросы, потому что при запросе от почтальона это работает в любом случае. но когда он запрашивается из браузера с помощью fetch (), он работает только с app.use()
, это запрос выборки внешнего интерфейса:
fetch('http://localhost:3000/resource', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ key:'value' })
})
.then(res => {
console.log(res);
})
.catch(err => {
console.log('something went wrong', err);
});
, что мешает ему работать с указанным c маршрутом при запросе от браузер