#graphql #aws-fargate #aws-elb #aws-application-load-balancer
#graphql #aws-fargate #aws-elb #aws-application-балансировщик нагрузки
Вопрос:
Я получал следующие ошибки при попытке получить доступ к URL-адресу graphql из https://subdomain-b.abc.com / сервис.
POST https://subdomain-a.abc.com/graphql 504
Access to fetch at 'https://subdomain-a.abc.com/graphql' from origin 'https://subdomain-b.abc.com/' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
Обе службы работают в одной учетной записи aws на Fargate, перед ними находится ELB. Маршрут 53 перенаправляет запросы на ELB.
Большинство ответов, которые я искал в Google, связаны с сегментом S3, что не относится к моей настройке. Дайте мне знать, если я смогу предоставить более подробную информацию.
Ответ №1:
Вашему серверу GraphQL необходимо добавить Access-Control-Allow-Origin
заголовок HTTP к своим ответам.
Вот хорошая и всеобъемлющая статья о том, что делает CORS и зачем вам это нужно https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
Комментарии:
1. Это имеет смысл. Я предполагаю
POST https://subdomain-a.abc.com/graphql 504
, что ошибка связана с отсутствием заголовка ответа в ответе graphql?2. Скорее всего, да. Вы обнаружите, что можете получить доступ к API с помощью инструмента командной строки, такого как CURL, потому что он не выполняет предполетную проверку, которую должны выполнять браузеры, и поэтому игнорирует требования CORS. Подробнее об этом в документации. — Помните, что служба также должна возвращать правильные заголовки CORS в ответе http OPTIONs, поскольку это то, что браузер использует для предполетной проверки.
3. Теперь я понял. Спасибо за разъяснение.
4. Отлично! После того, как вы убедились, что это работает, не могли бы вы либо принять ответ, либо задать дополнительные уточняющие вопросы, если он не работает