Попытка открыть новое окно с заголовком Авторизация (реакция) из приложения, чтобы подключить пользователя на нашем сайте - PullRequest
0 голосов
/ 25 октября 2019

Проблема контекста: у нас есть приложение, использующее React и axios для выполнения некоторых запросов из нашего API. У нас также есть веб-сайт, который онлайн и хорошо. Мне нужно разработать часть приложения "Аккаунт", но времени и денег не хватает. Решение состоит в том, чтобы сделать ссылку в приложении, которая перенаправляет на раздел «Аккаунт» на сайте.

Итак, я должен передать заголовок авторизации с токеном на предъявителя в моем запросе, а затем открыть это окно с токеном. Но я действительно не могу заставить эту работу. Я попробовал с axios, но мне не очень удобно с ним (не я, который разрабатывает целое приложение). Поэтому я пытаюсь использовать старый XMLHttpRequest ().

<a onClick={this.onRedirectAccount}>

onRedirectAccount = e => {

     e.preventDefault();
     var redirectAccountUrl = "urlToMyAccountOnWebsite";
     const http = new XMLHttpRequest();
     http.open("GET", redirectAccountUrl);
     http.withCredentials = true;
     http.setRequestHeader("Accept", "application/json, text/plain, */*");
     http.setRequestHeader('authorization', 'Bearer '+ localStorage.getItem("token") );
     http.send();
     window.open(redirectAccountUrl);

Если я сделаю запрос на Почтальоне, я вижу, что я подключен как пользователь. Я также подключен как пользователь, когда я просматриваю предварительный просмотр моего запроса в браузере. Но открывающееся окно все еще говорит мне, что я не связан. Я думаю, это потому, что мой window.open не держит заголовок Authorization сам по себе.

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

1 Ответ

0 голосов
/ 25 октября 2019

Вы хотите перенаправить пользователя на urlToMyAccountOnWebsite. Вы не можете установить заголовки HTTP-запроса, если не делаете асинхронный запрос.

Решение, отправьте свой токен в качестве параметра get. Измените ваш URL, который будет перенаправлен следующим образом:

yourSite.com/account?token=someTokenString, затем обработайте и используйте его на перенаправленной странице.

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