У меня возникла проблема, связанная с CORS, при запуске облака Google в службе, для которой
требуется проверка подлинности.
Если я пытаюсь выполнить команду curl через cli с токеном Bearer,
все отлично работает.К сожалению, если я попытаюсь выполнить тот же вызов через ajax в javascript,
я получу 403.
const http = new XMLHttpRequest();
const url = 'https://my-app.run.app';
http.open("GET", url);
http.withCredentials = true;
http.setRequestHeader("authorization", 'Bearer ' + id_token);
http.send();
http.onreadystatechange = (e) => {
console.log(http.responseText)
}
Ошибка в журналах запуска облака:
The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header. Read more at https://cloud.google.com/run/docs/securing/authenticating
Контейнер никогда не удаляется.
Проблема, с которой я сталкиваюсь, заключается в том, что, когда я звоню с помощью ajax, в веб-браузере
.Веб-браузер выполняет предварительный запрос (ОПЦИИ на
url) без отправки заголовка авторизации (что является ожидаемым поведением
)
Кажется, проблема в том, что облачный прогон пытается аутентифицироватьОПЦИИ
запрашивают и никогда не попадают в мой контейнер, что, насколько я понимаю,
не должно быть сделано.(
https://www.w3.org/TR/cors/#cross-origin-request-with-preflight-0)
Это известная проблема с запуском в облаке?
Как я могу сделать ajax-запрос к аутентифицированной службе запуска в облаке?