Отправка маркера-носителя с помощью аксиомов
В моем приложении для реагирования я использую 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.
Как отправить заголовок авторизации с каждым запросом? Не могли бы вы рекомендовать какой-либо другой модуль с реакцией?
Ответы
Ответ 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.
Ответ 3
Второй параметр axios.post
равен data
(не config
). config
- третий параметр. Подробнее см. Ниже: https://github.com/mzabriskie/axios#axiosposturl-data-config
Ответ 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"
};