Проблема с CORS на Node.js на HTTPS (Эластичный бобовый стебель)

#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. Итак, каков результат запроса опций? Выполняется ли обработчик вообще на сервере?