#node.js #amazon-web-services #cors #amazon-elastic-beanstalk
Вопрос:
У меня есть Node.js API, который я развернул с помощью Elastic Beanstalk, и когда я отправляю запрос POST в API по HTTP, у меня нет проблем с получением ответа. Однако, когда я пытаюсь отправить запрос POST прослушивателю HTTPS для API с сайта, который обслуживается по протоколу HTTPS, я получаю следующую ошибку:
Запрос перекрестного источника заблокирован: Та же политика источника запрещает чтение удаленного ресурса по адресу…
Я вижу, что сбой происходит по предварительному запросу ОПЦИЙ. Я видел много сообщений StackOverflow об ошибках такого рода, но ни одно из предложений, которые я пробовал, не сработало.
Вот как мой Node.js файл обрабатывает запросы:
const express = require('express');
const bodyParser = require('body-parser');
const path = require("path");
const cors = require('cors');
const e = require('express');
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
if('OPTIONS' === req.method) {
res.sendStatus(200);
} else {
next();
}
});
...
Я бы подумал, что код вернет 200 в методе ОПЦИЙ, основанном на приведенном выше коде, но ему все равно будет отказано.
Есть какие-либо предложения о том, как я могу решить эту проблему CORS?
Комментарии:
1. Возможно, также разрешить запрос «ПАРАМЕТРЫ» вместо того, чтобы просто ПОЛУЧАТЬ и ПУБЛИКОВАТЬ?
2. Почему вы используете
cors
промежуточное программное обеспечение и все еще определяете свой собственный ответ cors. Кроме того, вам придется добавить ПАРАМЕТРЫ вAccess-Control-Allow-Methods
заголовок3. @Дейв Ньютон, у меня были ОПЦИИ для методов разрешения доступа, т. Е. res.setHeader («Методы разрешения доступа», «ПОЛУЧИТЬ, ОПУБЛИКОВАТЬ, ПАРАМЕТРЫ»), но они не работали, когда у меня это было. дерпиршер, позже я добавил промежуточное программное обеспечение cors. Изначально у меня не было промежуточного программного обеспечения cors, но я добавил его в качестве попытки проверить, исправит ли это проблему. В любом случае, он все еще терпит неудачу в ВЫБОРЕ ВАРИАНТОВ.
4. Итак, каков результат запроса опций? Выполняется ли обработчик вообще на сервере?