Получение 401 из выборки в React - Передача sessionId - PullRequest
0 голосов
/ 27 июня 2019

Я создаю приложение реакции, первый экран - это форма входа в систему, которая вызывает ресурс GET rest api на другом хосте (8080) (для решения проблемы CORS было установлено расширение CORS на chrome).

Послевход в систему успешно, попытка выполнить еще одну GET-выборку, но на этот раз я получаю 401!

Попытка установки учетных данных: «same-origin» или учетных данных: «include» (как в вызовах, так и во втором), ноэто не помогло!

fetch('http://<some host>:8080/WebServices/api/SessionManager/login?userName='
        + this.state.userName + '&password=' + this.state.password,
        {
            //credentials: "include",
            //mode: "no-cors"
        })
        .then(
            (response) => {
                if (response.status < 200 || response.status > 300) {
                    console.log('Looks like there was a problem. Status Code: ' +
                        response.status);
                    this.state.showError = true;
                    this.state.errorMessage = 'Please enter a valid credentials.';

                    return;
                } else {
                    localStorage.setItem('session', response);
                    console.log("Response ======>", response);
                    window.location.href = '/main';

                }

            }
        )
        .catch((error) => {
            console.error(error);
        });

второй вызов:

function getSession(){
   return localStorage.getItem('session').then(response => JSON.parse(response))
}

function getProjectDetails(){
   let params = getSession();

   let headers = new Headers();
   fetch('http://<host>:8080/WebServices/api/ProjectManager/getProjectDetails?userSessionId=', params
  // {
  //   //credentials: "include",
  //   //credentials: "same-origin",
  //   //crossdomain: true,
  //   //mode: 'no-cors',
  //   //headers: headers
  // }
  )
  //.then(res => res.json())
  .then((data) => {
    this.setState({ projectsDetails: data })
    console.log(data);
  })
  .catch(console.log);

} Класс App расширяет компонент {

Есть ли способ получить сеанс из файлов cookie браузера?и установить его в заголовок или параметры выборки?как я могу решить это?

1 Ответ

0 голосов
/ 27 июня 2019

Если я правильно понимаю, вы спрашиваете, как сохранить и извлечь сохраненные значения из файлов cookie.

Сначала вам нужно сохранить данные, полученные с первой выборки, имейте в виду, что необходимо преобразовать его в jsonответ на строку с помощью JSON.stringify.

localStorage.setItem('session', JSON.stringify(response));

Затем вы можете получить его с помощью:

localStorage.getItem('session');

LocalStorage должен быть сохранен как json и декодировать его после getItem ().

Итак, чтобы добавить параметры сеанса ко второму извлечению, вы можете сделать следующее:

function getSession(){
 return JSON.parse(localStorage.getItem('session'))
}
// second fetch,
function secondFetch(){
 var params = getSession();
 // in var params you have the data stored so now you can do the second fetch
}

Надеюсь, я вам помог, ничего, не стесняйтесьспрашивайте.

...