Подтвердить что ты не робот

Отправка маркера-носителя с помощью аксиомов

В моем приложении для реагирования я использую axios для выполнения запросов api REST.

Но он не может отправить заголовок авторизации с запросом.

Вот мой код:

tokenPayload() {
  let config = {
    headers: {
      'Authorization': 'Bearer ' + validToken()
    }
  }
  Axios.post( 
      'http://localhost:8000/api/v1/get_token_payloads',
      config
    )
    .then( ( response ) => {
      console.log( response )
    } )
    .catch()
}

Здесь метод validToken() просто вернет токен из памяти браузера.

Все запросы имеют 500 ответов об ошибках, говорящих, что

Токен не может быть проанализирован из запроса

из back-end.

Как отправить заголовок авторизации с каждым запросом? Не могли бы вы рекомендовать какой-либо другой модуль с реакцией?

4b9b3361

Ответ 1

var config = {
    headers: {'Authorization': "bearer " + token}
};

var bodyParameters = {
   key: "value"
}

Axios.post( 
  'http://localhost:8000/api/v1/get_token_payloads',
  bodyParameters,
  config
).then((response) => {
  console.log(response)
}).catch((error) => {
  console.log(error)
});

Первый параметр - это URL.
Второе - это тело JSON, которое будет отправлено вместе с вашим запросом.
Третий параметр - это заголовки (между прочим). Это тоже JSON.

Ответ 2

Вот уникальный способ установки токена авторизации в axios. Настройка конфигурации для каждого вызова axios не очень хорошая идея, и вы можете изменить токен авторизации по умолчанию:

const axios = require('axios');
axios.defaults.baseURL = 'http://localhost:1010/'
axios.defaults.headers.common = {'Authorization': 'bearer ${token}'}
export default axios;

редактировать

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

axios.defaults.headers.common = {'Authorization': 'Bearer ${token}'}

Теперь вам не нужно устанавливать конфигурацию для каждого вызова API. Теперь токен авторизации устанавливается для каждого вызова axios.

Ответ 4

Вы можете создать конфиг один раз и использовать его везде.

const instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'Authorization': 'Bearer '+token}
});

instance.get('/path')
.then(response => {
    return response.data;
})

Ответ 5

Используя перехватчик Axios:

const service = axios.create({
  timeout: 20000 // request timeout
});

// request interceptor

service.interceptors.request.use(
  config => {
    // Do something before request is sent

    config.headers["Authorization"] = "bearer " + getToken();
    return config;
  },
  error => {
    Promise.reject(error);
  }
);

Ответ 6

Если вы хотите, чтобы некоторые данные после передачи токена в заголовке, попробуйте этот код

const api = 'your api'; 
const token = JSON.parse(sessionStorage.getItem('data'));
const token = user.data.id; /*take only token and save in token variable*/
axios.get(api , { headers: {"Authorization" : 'Bearer ${token}'} })
.then(res => {
console.log(res.data);
.catch((error) => {
  console.log(error)
});

Ответ 7

кто-нибудь может мне помочь?

xhr.js: 166 GET http://localhost: 3000/users 422 (НЕОБХОДИМЫЙ СУЩНОСТЬ)

Ответ 8

Это работает, и мне нужно установить токен только один раз в моем app.js:

axios.defaults.headers.common = {
    'Authorization': 'Bearer ' + token
};

Затем я могу делать запросы в своих компонентах, не устанавливая заголовок снова.

"axios": "^0.19.0",

Ответ 9

Это то, с чем я тоже столкнулся. Маркер, который вы передаете, неверен.

Just Hardcode the token и pass, you will get the correct response. But if token is not passed in single quote '', then it will surely fail. It must be in format 'Authorization': 'Bearer YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjVlOTQ5YMmQ5ZjMwYjA0YmEzZmZjN2I1MmI4MDJkNQ', where after Bearer one space must be present, also inside single quotes, this is very important.

Просто жестко закодируйте токен и пройдите, вы получите правильный ответ. Но если токен не передан в одинарной кавычке '', то он обязательно потерпит неудачу. Он должен быть в формате "Авторизация": "Носитель YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjVlOTQ5YMmQ5ZjMwYjA0YmEzZmZjN2I1MMI4MDJkNQ", где после того, как важен один пробел, должен присутствовать один пробел, один пробел внутри, также должен присутствовать один пробел, внутри которого должен стоять один пробел, один [D1], заключенный в кавычки, должен стоять один пробел, [D1, D1], внутри должен стоять один [1], и [1] должен находиться в кавычках;
var token = "YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjVlOTQ5YMmQ5ZjMwYjA0YmEzZmZjN2I1MmI4MDJkNQ";

var headers = {
  Authorization: "Bearer " + token,
  Accept: "application/json, text/plain, */*",
  "Content-Type": "application/json"
};

IMP: приведенный выше код будет работать, но если вы отправите что-то вроде:

"Авторизация": "Носитель" + YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjVlOTQ5YMmQ5ZjMwYjA0YmEzZmZjN2I1MmI4MDJkNQ, произойдет сбой

или ----- приведенный ниже код также потерпит неудачу, я надеюсь, вы понимаете основную разницу

var token = YzE5ZTdiMjVlYzM5NjA2MGJkZTM5NjA0YmEzZmZjN2I1MmI4MDJkNQ;

var headers = {
  Authorization: "Bearer " + token,
  Accept: "application/json, text/plain, */*",
  "Content-Type": "application/json"
};