В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin», когда конечная точка вызывается из приложения, работающего на локальном хосте - PullRequest
0 голосов
/ 11 октября 2019

Я разрабатываю приложение внешнего интерфейса в React, которое вызывает веб-службы, разработанные в приложении Spring Boot, работающем в кластере Kubernetes. Когда я запускаю приложение внешнего интерфейса из localhost и просматриваю логи бэкэнда, токен JWT не имеет значения, несмотря на то, что он был отправлен в вызове из приложения внешнего интерфейса, и ошибка No 'Access-Control-Allow-Origin' header is present on the requested resource отображается в консоли, как показано ниже. Когда я внедряю приложение fontend в кластер Kubernestes, токен присутствует - один и тот же код в обоих случаях. Если в бэкэнд-приложении не включена аутентификация, токен, присутствующий на бэкэнд-сервере, регистрирует вызовы из localhost.

Я использую Fetch для вызова GET:

fetch(url, {
    headers: {
        'Authorization': 'Bearer ' + auth,
    },
})

Ошибка, которую я вижу в консоли от localhost, работающей в Chrome или Firefox без использования каких-либо плагинов CORS:

index.js:148 OPTIONS MY-BACKEND-URL 500 (Server Error)
submissions:1 Access to fetch at 'MY-BACKEND-URL' from origin 'http://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: 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.

Бэкэнд-разработчик сообщает, что настроена эта конфигурация CORS:

.allowedOrigins("*")
.allowedHeaders("Origin", "Content-Type", "Accept");
and all methods

Это заголовки Response, отображаемые в консоли:

Allow     GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
Connection    keep-alive
Date    Fri, 11 Oct 2019 11:02:18 GMT
Server    nginx/1.15.10
Transfer-Encoding    chunked

ЭтоЗаголовки запроса:

Accept    */*
Accept-Encoding    gzip, deflate
Accept-Language    en-GB,en;q=0.5
Access-Control-Request-Headers    authorization
Access-Control-Request-Method    GET
Connection    keep-alive
DNT    1
Host    MY-HOST-IP
Origin    http://localhost
Referer    http://localhost/submissions
User-Agent    Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/69.0

Есть ли какие-либо предложения о том, как запустить приложение внешнего интерфейса на localhost, когда включена аутентификация в приложении внутреннего интерфейса?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...