Запрос входа в систему Axios: не авторизован, код статуса запроса 401 - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь получить токен авторизации, отправляя запрос к API с помощью axios:

axios({
    method: 'post',
    url: 'http://62.110.134.187/api/signin',
    headers: { 'content-type': 'application/x-www-form-urlencoded' },
    auth: {
        username: usr,
        password: pwd
    }
}).then(function (response) {
    console.log(response)
}).catch(function (error) {
    console.log('Error: ' + error)
})

Я всегда получаю код состояния 401 (Не авторизован):

Error: Request failed with status code 401

Где я делаю неправильно?

Дело в том, что выполнение одного и того же запроса с использованием python работает нормально:

payload = "username=%s&password=%s" % (usr,pwd)
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.request("POST", url_login, data=payload, headers=headers)
print(response.text)
data = response.json()
token = data["token"]

1 Ответ

0 голосов
/ 21 марта 2019

Отправляя имя пользователя и пароль в auth: {} в axios, вы выполняете базовую аутентификацию, в основном отправляя заголовок Authorization: basic <base64(user:pass)>.

Согласно рабочей программе на Python, вам необходимо отправить имя пользователя и паролькак часть тела запроса.Вам также необходимо сериализовать параметры тела для типа содержимого с кодировкой URL.

например

const querystring = require('querystring');

axios({
    method: 'post',
    url: 'http://62.110.134.187/api/signin',
    headers: { 'content-type': 'application/x-www-form-urlencoded' },
    data: querystring.stringify({
        username: usr,
        password: pwd
    })
}).then(function (response) {
    console.log(response)
}).catch(function (error) {
    console.log('Error: ' + error)
})
...