Я пытаюсь перехватить топор ios после вызова в vue.
Сначала я создаю топор ios в топоре ios. js
import Vue from 'vue'
import axios from 'axios'
const axiosInstance = axios.create({
baseURL: `http://localhost:8081/` // the url of our server
})
Vue.prototype.$axios = axiosInstance
export { axiosInstance }
Здесь вы видите вызов топора ios и перехватчиков
import { axiosInstance } from '../boot/axios'
export default {
validateUsers: async (username, password) => {
// var usersPromise = axiosInstance.post('/users', {
axiosInstance.post('/users', {
params: {
name: username,
password: password
}
})
axiosInstance.interceptors.response.use((response) => {
console.log('RESPONSE', response)
if (response.status === 401) {
console.log('You are not authorized')
return Promise.reject(response)
} else if (response.status === 200) {
console.log('response SUCC')
return response
}
}, (error) => {
console.log('ERROR RECEIVED BY AXIOS', error.response)
if (error.response && error.response.status === 401) {
return Promise.reject(error.response.status)
}
console.log('ERR RES', error.message)
return Promise.reject(error.message)
})
}
}
И в моем Vue компоненте я проверяю обещание, подобное этому
usersAPI.validateUsers(username, password)
.then(ok => {
console.log('ok', ok)
this.valForm(this.$refs.loginForm)
}, (error) => {
if (error === 401) {
this.getMessage('error', 'User or password wrong')
return error
}
this.getMessage('error', 'Something went wrong. Error: ' + error)
return error
})
В моем nodeJS код Я возвращаю 401, если логин пользователя не верный, и я вижу, что CORS сначала отправляет вызов OPTION, который возвращает 204, а затем я отправляю 401 (что правильно).
Что я ожидаем
Ax ios перехватчики обрабатывают ошибку 401 и отклоняют обещание
Что происходит
Функция validateUsers()
возвращает ' хорошо '(обещание выполнено) вместо того, чтобы быть отклоненным топором ios.
Почему Ax ios не обрабатывает ошибку 401?