CORS при отправке и получении
опять вопрос про CORS поднимаю сервер на 9000м порту на nodejs + node modules express ( в браузере - работает ) поднимаю второй проект, на котором делаешь API запрос к серверу в консоле вижу - Provisional headers are shown, хотя вроде всё прописано
Господа, посоветуйте, как правильно отправить и принять запрос?
// server
const express = require("express")
const app = express()
app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', '*');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});
app.get("/api", (req, res) => {
res.send({})
})
app.listen("9000")
// и ест-но охота получить эти данные ( в ответе -> [] )
fetch("http://localhost:9000/api", {
headers: {
"Allow": "*",
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json; charset=utf-8",
}
})
.then(response => response.json())
.then(json => {console.log('+++')})
.catch(e => console.error(e))
p.s. да, про CORS уже тыщу раз писали, но вот вроде все заголовки учтены, и прям теряюсь, что не та
Ответы (1 шт):
Вы шлете заголовок который не был разрешен - Access-Control-Allow-Origin и Allow который шлет сам браузер, даже если его не указать
Для того чтобы их разрешить нужно заменить:
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
на
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Allow,Access-Control-Allow-Origin');
или разрешить любые заголовки так:
res.setHeader('Access-Control-Allow-Headers', '*');
Так же хочу обратить внимание что заголовок Access-Control-Allow-Origin должен отдавать сервер и его не требуется отправлять с браузера на клиенте, так что можно его убрать.