Доступ к fetch at заблокирован политикой CORS при доступе из другого поддомена

#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. Отлично! После того, как вы убедились, что это работает, не могли бы вы либо принять ответ, либо задать дополнительные уточняющие вопросы, если он не работает