Я хочу перенаправить из конечной точки API в другую конечную точку, пропуская заголовки и файлы cookie.
Ниже приведено перенаправление с конечной точки, с которой я хочу перенаправить на другую конечную точку с заголовком и файлами cookie.
(GET "/the-endpoint"
request
(-> (response/redirect "/another-endpoint")
(response/header "Authorization" (str "Bearer " "some-token"))
(response/set-cookie "access_token" "some-token")))
Обратите внимание, что я поместил токен и в заголовок, и в файлы cookie для целей тестирования, поскольку ни заголовок, ни файлы cookie не передаются в /another-endpoint
У меня есть простой GETдля другой конечной точки, которая пока возвращает ответ с глупым телом.
Я наблюдаю за значениями заголовков и файлов cookie на вкладке Сеть в Chrome DevTools. Я испытываю странное поведение в этом обработчике, при котором тело ответа загружается Chrome, а не отображается в браузере.
(GET "/another-endpoint"
request
(response/response "something random to be used as the body for now"))
Я вижу запрос в сети, который показывает состояние 200, но заголовок запросаи куки, через которые я прошел, не были установлены. Я думал, что это проблема CORS, поэтому я сделал перенаправление на том же API и испытал то же поведение.
Я использую:
[ring/ring-core "1.6.3"]
По сути, я хочу знать:
- Почему не переданы заголовок
Authorization
и access_token
cookieна /another-endpoint
? - Почему ресурс
/another-endpoint
загружается Chrome, а не отображается в браузере?
Что я пытаюсь сделать:
- Пользователь заходит на веб-сайт и нажимает кнопку, чтобы что-то сделать.
- Эта кнопка перемещается к конечной точке API, которая будет генерировать jwt.
- API необходимо перенаправить навнешний API-интерфейс с jwt в заголовке для автоматической аутентификации.
- После аутентификации пользователь должен плавно перейти на панель мониторинга внешнего веб-сайта, чтобы он мог продолжить (без ручного входа в систему).
Сейчас я тестирую все на одном API.