Как я могу отправить заголовок аутентификации с токеном через axios.js? Я безуспешно пробовал несколько вещей, например:
const header = `Authorization: Bearer ${token}`;
return axios.get(URLConstants.USER_URL, { headers: { header } });
Выдает мне эту ошибку:
XMLHttpRequest cannot load http://localhost:8000/accounts/user/. Request header field header is not allowed by Access-Control-Allow-Headers in preflight response.
Мне удалось заставить его работать, установив глобальное значение по умолчанию, но я предполагаю, что это не лучшая идея для одного запроса:
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
Обновить :
Ответ Коула помог мне найти проблему. Я использую промежуточное ПО django-cors-headers, которое по умолчанию уже обрабатывает заголовок авторизации.
Но я смог понять сообщение об ошибке и исправил ошибку в моем коде запроса axios, который должен выглядеть так
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
источник
return axios.get(URLConstants.USER_URL, { headers: { Authorization: `Bearer ${data.token}` } });
Попробуй это :
axios.get( url, {headers: { "name" : "value" } } ) .then((response) => { var response = response.data; }, (error) => { var status = error.response.status } );
источник
Это сработало для меня:
let webApiUrl = 'example.com/getStuff'; let tokenStr = 'xxyyzz'; axios.get(webApiUrl, { headers: {"Authorization" : `Bearer ${tokenStr}`} });
источник
Вместо того, чтобы добавлять его к каждому запросу, вы можете просто добавить его как конфигурацию по умолчанию, например.
axios.defaults.headers.common['Authorization'] = `Bearer ${access_token}`
источник
Вы почти правы, просто измените свой код таким образом
const headers = { Authorization: `Bearer ${token}` }; return axios.get(URLConstants.USER_URL, { headers });
обратите внимание, где я помещаю обратные кавычки, я добавил '' после Bearer, вы можете опустить, если вы обязательно будете обрабатывать на стороне сервера
источник
-
между схемой аутентификации и токеном есть пробел, а не тире ( ). Я никогда не видел, чтобы какой-либо тип сервера требовал тире, как вы показали, и большинство, если не все, отправили бы обратно ошибку, если бы она была предоставлена.Вместо вызова функции axios.get используйте:
axios({ method: 'get', url: 'your URL', headers: { Authorization: `Bearer ${token}` } })
источник
Вы можете попробовать это.
axios.get( url, {headers: { "Access-Control-Allow-Origin" : "*", "Content-type": "Application/json", "Authorization": `Bearer ${your-token}` } } ) .then((response) => { var response = response.data; }, (error) => { var status = error.response.status } );
источник
res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,OPTIONS,Accept,Authorization, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');
это изменение устранило мою проблему, просто попробуйте!
источник
Установите
cors
промежуточное ПО. Мы пытались решить это с помощью собственного кода, но все попытки с треском провалились.Это заставило его работать:
cors = require('cors') app.use(cors());
Исходная ссылка
источник