Привет, сообщество stackoverflow, я пытаюсь настроить шлюз API aws, который ссылается на приложение nodeJS, работающее на экземпляре EC2, он отлично работает с почтальоном или прямой ссылкой URL, но не будет работать, когда API вызывается из моего приложения реакции js (с использованием axios), даже работая локально. Я, очевидно, включил CORS в своем API-шлюзе, как показано ниже, и развернул его:
Я перепробовал все ответы, данные в stackoverflow, но большинство из них используют лямбду, может быть, мне нужно сделать что-то еще для EC2? Что мне не хватает? может быть, мне нужно что-то добавить к моим параметрам axios? тем не менее он возвращает 200, что странно точное сообщение: Запрос между источниками заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса по адресу https://xxxxxxxx.execute-api.us-east-2.amazonaws.com/OfficialBackend/. (Причина: заголовок CORS «Access-Control-Allow-Origin» отсутствует). Код состояния: 200.
заранее спасибо
Я также попробовал предложение, данное мне mah517, я все еще получаю CORS, хотя он возвращает 200 с фактическим сообщением, что странно.
Итак, в этом случае вы имеете в виду заголовки, возвращаемые моим приложением nodeJS?
как бы мне это настроить?
Везде, где у вас есть код для возврата ответа, добавьте ключ «заголовки»; значение должно быть словарем, в котором в качестве одного ключа разрешены заголовки управления доступом, а в качестве другого — источник управления доступом. Значения этих ключей должны быть такими же, как и в API Gateway. Ключи также должны быть записаны точно так же, как в API Gateway.
в Nodejs или в реакции js я помещаю это? не могли бы вы дать полный ответ с примером кода, пожалуйста, чтобы я мог принять ваш ответ, если он работает
возьмите мой путь «/» в качестве примера, как мне его изменить? : app.get('/', (req, res) => { res.json({ Success: true, message: 'Добро пожаловать на серверную часть!' }); });
поэтому формат вашего ответа должен быть следующим: { Success: true, message: «Добро пожаловать на серверную часть!», headers: { «Access-Control-Allow-Headers»: «Content-Type,X-Amz-Date, Авторизация,X-Api-Key,X-Amz-Security-Token", "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Methods": "DELETE,GET,HEAD, ОПЦИИ,ПАТЧ,ПОСТ,ПУТ" } }
только что попробовал ваше решение, к сожалению, тот же ответ, с GETS он возвращает сообщение с 200, однако это странно, но с POST/PUT он ничего не возвращает, CORS во всех случаях
Я добавил скриншот своей попытки в исходный вопрос
Если у вас есть «Access-Control-Allow-Credentials»: true, вы не можете использовать подстановочный знак * для Access-Control-Allow-Origin. Это правило применяется браузером.
пробовал удалить, все равно не работает





В последнее время я столкнулся с той же проблемой. Просто сделайте небольшое дополнение в ответе метода и ответе интеграции. Я прикреплю файл ss.
Извините за поздний ответ, только что из отпуска, где это окно? Я его нигде не вижу?
подождите, nvm нашел его, теперь он работает на некоторых вызовах! хотя вход в систему по-прежнему не работает
О боже, ок, теперь я понимаю, что мне нужно сделать это для каждой конечной точки! раздражающий!
в любом случае молодец, ты нашел решение!
Вам необходимо убедиться в том, что «заголовки» в вашем ответе точно такие же, как «заголовки», которые вы установили здесь, в API Gateway.