#javascript #authentication #axios #basic-authentication
#javascript #аутентификация #axios #basic-аутентификация
Вопрос:
Я захожу в удаленный api, базовая аутентификация настроена. Метод авторизации:
auth() {
const token = Buffer.from(`${email}:${psw}`, 'utf8').toString('base64')
var config = {
method: "get",
url:
"http://....",
headers: {
Authorization: `Basic ${token}`
}
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
})
}
При авторизации через браузер через стандартную форму учетные данные сохраняются и в дальнейшем вы можете получить доступ к серверу без авторизации.
При отправке запроса авторизация также проходит успешно, но если нужно отправить другой запрос, данные авторизации не сохраняются и возникает ошибка:
Не удалось загрузить ресурс: сервер ответил статусом 401 (неавторизованный).
Где сохранить заголовок? Или как правильно организовать работу?
Ответ №1:
При использовании Server-> Server communication нет «сеанса», как у вас в браузерах (обычно реализуется с использованием файлов cookie).
Вам необходимо прикреплять учетные данные в каждом из ваших запросов.
Axios
упростите это, настроив «базовые» заголовки с вашими учетными данными, и каждый запрос с экземпляром автоматически прикрепит заголовок.
const token = Buffer.from(`${email}:${psw}`, 'utf8').toString('base64');
const axios = Axios.create({
baseURL: '/users-mobile/remote/api',
headers: { Authorization: `Basic ${token}` },
});
// this `axios` instance will add the headers to all request that are made by it.
Комментарии:
1. Хорошо, спасибо. И если страница обновится, вам нужно будет повторно передать данные авторизации? Где я могу сохранить токен? в файлах cookie? Насколько это правильно?
2. Если вариант использования не является связью между сервером и сервером, существуют рекомендации по взаимодействию между браузером и сервером (обычно на основе файлов cookie)
3. Не могли бы вы порекомендовать пример, пожалуйста?
4. Будьте конкретны, пример для чего?
5. Для авторизации на сервере через basic auth.