Когда мы обращаемся к API-интерфейсу сервера ELB по URL-адресу https, выдается сообщение об ошибке
Запрос перекрестного источника заблокирован: политика одного источника запрещает чтение удаленного ресурса в https://abcde -1xx8x3xx3x.ap-юго-1.elb.amazonaws.com / апи / авт / TestApi .(Причина: запрос CORS не был выполнен).
Внешний интерфейс: Мы используем Cloudfront для доставки внешнего интерфейса от S3.URL-адрес облачного фронта работает, и страница загружается нормально.
На стороне облачного фронта в разделе поведения
- занесены в белый список заголовков [Accept, Access-Control-Allow-Origin, Access-Control-Request-Headers, Access-Control-Request-Method, Authorization, Content-Type, Referer, X-Access-Token, X-HTTP-Method-Override, X-Requested-With]
- Политика просмотра Prorocol- Перенаправить HTTP на HTTPS
- Разрешенные методы HTTP - GET, HEAD, OPTIONS, PUT, POST .....
Backend: Backend nodejs rest apiнаходится в EC2 и доставляется через Интернет через систему Classic Load Balancer.EC2 находится внутри VPC.Мы используем ELB URL для тестирования API.API работает в Почтальоне.Здесь мы использовали протокол балансировки нагрузки в качестве HTTPS и протокол экземпляра в качестве HTTP.К этому приложен SSL-сертификат.
в приложении nodejs, мы устанавливаем заголовки, как показано ниже
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Request-Method', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.header('Access-Control-Allow-Headers','Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, Access-Control-Allow-Origin, Origin, X-HTTP-Method-Override, Accept, X-Access-Token');
res.setHeader('Access-Control-Allow-Credentials', 'true');
в коде шрифта при использовании fetch api, мы устанавливаем mode: 'cors'
Пробовал искать другие похожие проблемы cors, но ничего не помогло.
Может кто-нибудь подсказать мне, как решить эту проблему cors, чего мне здесь не хватает?Или есть лучший способ справиться с этим для производства?