Axios: базовая аутентификация не работает с запросом GET

У меня есть запрос на получение axios с базовой аутентификацией, но я продолжаю получать код состояния 401. Мой код работает, если я делаю почтовый запрос, поэтому я не знаю, что я здесь делаю не так.

Мой бэкэнд-код:

app.get('/api/find-user', (req, res) => {
    const username = req.body.username;
    axios.get('my-url', username, {
        auth:{
            username: 'my-username',
            password: 'my-password'
        }
    })
    .then(resp => {
        res.json({resp});
    })
    .catch(error => {
        res.send(error.response.status);
    })
});

Мой код внешнего интерфейса:

findUser(user){
    const username = user;
    axios.get('/api/find-user', {username})
        .then(resp => {
            console.info(resp);
        })
        .catch(error => {
            console.info(error)
        })
}

Опять же, когда я делаю сообщение для создания нового пользователя, он действительно работает, но когда я делаю запрос GET, он продолжает говорить, что я не авторизован.

Обновлено: если вы чувствуете, что хотите проголосовать против, будьте достаточно взрослыми, чтобы объяснить, почему.

У меня была та же проблема, только что установил qs и проанализировал тело как: let body = qs.stringify(params), поскольку в параметрах были мое имя пользователя и пароль. npmjs.com/package/qs

Cassiano Montanari 27.12.2018 03:55
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
1
6 094
2

Ответы 2

Здесь довольно много потенциальных причин. Думаю, было бы полезно указать, к какому API вы пытаетесь получить доступ. Например:

  • у вас определенно есть доступ READ к вашей учетной записи на сервере API?
  • ваш запрос POST не использует пароль, так что ваш пароль определенно правильный для GET?

Я использую Jira api, docs.atlassian.com/software/jira/docs/api/REST/7.10.0/#api/2‌ /…

djamaile 09.11.2018 10:40

Вам нужно сделать:

const usernamePasswordBuffer = Buffer.from(username + ':' + password);
const base64data = usernamePasswordBuffer.toString('base64');
const axiosObject = axios.create({
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `Basic ${base64data}`,
    }
});

Потому что Axios требует, чтобы авторизация была «зашифрована» и с именем пользователя, и с паролем.

Это действительно помогло.

Gaurav Chauhan 01.04.2021 10:35

Другие вопросы по теме