У меня есть проект, который отправляет HTTP-запросы от клиента, используя Axios
axios.create({
baseURL: `http://localhost:8081/`,
withCredentials: true
})
И я предполагаю, что это позволяет куки-файлы - которые, я уверен, они отображаются в браузере, прежде чем вы просите - чтобы быть отправлены с запросами.
Проблема возникает в серверной части, когда эта ошибка отображается в журнале:
Ответ на предварительный запрос не проходит проверку контроля доступа:
значение заголовка «Access-Control-Allow-Origin» в ответе должно
не должен быть подстановочным знаком '*', когда режим учетных данных запроса
'включают'. Происхождение 'http://localhost:8080' поэтому не допускается
доступ. Режим учетных данных запросов, инициированных
XMLHttpRequest управляется атрибутом withCredentials.
Я пробовал это:
app.use(cors({
//origin : to be set later
credentials: true,
}))
и это вместо:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header("Access-Control-Allow-Credentials", true);
next();
});
но ни один из них не работает.
Любая помощь будет оценена.
Редактировать 1: Я использую cookie-парсер, и я уверен, что он должен прикрепить куки к требованию.
В моем файле app.js нет других промежуточных программ, которые могут вызвать такую проблему, кроме CORS и Cookie-parser.
Редактировать 2: по запросу я вызвал эту команду:
curl -v -X ОПЦИИ http://localhost:8081
И вот результат:
Rebuilt URL to: http://localhost:8081/
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8081 (#0)
> OPTIONS / HTTP/1.1
> Host: localhost:8081
> User-Agent: curl/7.47.0
> Accept: */*
> < HTTP/1.1 204 No Content < X-Powered-By: Express < Access-Control-Allow-Origin: * < Access-Control-Allow-Methods: GET,HEAD,PUT,PATCH,POST,DELETE < Vary: Access-Control-Request-Headers < Content-Length: 0 < Date: Sun, 02 Sep 2018 23:31:11 GMT < Connection: keep-alive