Axios错误请求失败,401 React Native



我有一个useEffect函数,它通过axios调用一个带有承载身份验证的api

const user = useContext(UserContext )
const taskGetFunc = async () => {
try {
const { data } = await axios({
method: 'GET',
url: 'http://demo.shikkhaapp.com/api/homework-list/1',

headers: {'Authorization': user.token}
})
console.log(data)
} catch (error) {
console.log(user.token)
console.log(error)  
}


}
useEffect(() => {
taskGetFunc()
}, []) 

现在这给我返回这个错误

Request failed with status code 401
at node_modules/axios/lib/core/createError.js:15:17 in createError
at node_modules/axios/lib/core/settle.js:16:9 in settle
at node_modules/axios/lib/adapters/xhr.js:57:6 in onloadend
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:614:6 in setReadyState
at node_modules/react-native/Libraries/Network/XMLHttpRequest.js:396:6 in __didCompleteResponse
at node_modules/react-native/Libraries/vendor/emitter/_EventEmitter.js:135:10 in EventEmitter#emit

我知道这是一个关于身份验证的错误,但我在poster和reqbin中尝试了user.token。它在那里运行得很好,但在我的react应用程序上却不行。我试着在fetch中做这件事,在axios中用不同的方式,但显示了相同的错误。

你能帮我想一想可能导致错误的原因吗。

user.token是一个带有Bearer标记的字符串。

Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiMGNmNTFiMzQ5ZDliZTVjYjVjODVhOTUzOTk0ZGUzMTY2MDA3Nzk4Njk3MjNkOWRlYTAyOWRjZTgzY2U3N2E3OTJjOTA3Y2RhMmQyMDMzMTQiLCJpYXQiOjE2NDU5MDYxNDguNjkwNTEyODk1NTg0MTA2NDQ1MzEyNSwibmJmIjoxNjQ1OTA2MTQ4LjY5MDUxNTA0MTM1MTMxODM1OTM3NSwiZXhwIjoxNjc3NDQyMTQ4LjY4OTI5NzkxNDUwNTAwNDg4MjgxMjUsInN1YiI6IjQyIiwic2NvcGVzIjpbXX0.LfbwfLwO-PAAxhLcNLMXXelefcK6fmtKvFk55V2tRjWzP-XDqTUdkLO105ybkc1vU1QfX0gxdrCj4OSExItS82ySG5-mD4JmrGk4ckN0Ffs581anL2l3zYuH_ExulG564-Jkbzkqsfbu4nR8ysmlbvBZZmn0B2elIlZWnZRp-5XkDJkUTpvJKrl4CPoc4mldX_5VnoYaoob4ctHkNNVw4FBdnXRXX-OzzpmeW6D9aey1KZcHcwg6OE0aiA5wmp1YwC3Ou2lVE6XbUOl1e0VAFKOCJcCF3i29k89JEnFVuKW-X9tcajFbjRf1UohdpkY-uoIini1256ky-BN3C_98Gqq3w-CORLhbdfQIqET9kzilnKE7pJ97oXHUGzIJSu--IPMfljI9wHfFugXqsBzwa0fD8I1zg9uYW_oNtA264sVdgqVbntp23Q6KG9tecJCBPl7QToVsxaLx9hWjWuos39bt3nyp4Zj4iu4m3X4tGQpTZ-ZOsiY0UD1lGC5CclDTO1LYM2mKX6qGULBlhStQqrzsd9IRC-Qsxxt-MBDN5OQVvKsefdp--c38QUQNHkrwYY6JyWv1umiXcYs0ejwmGUwOIP9657xwm_thHeFIppoeiGZYLO1dJaibSeuA1XLO_Jh7WZ6hg0aTaglIsxBfFf5pguMVNbZ60mQe5NIvclw

这是服务器端的头,这是一个php代码,因为服务器是用laravel 制作的

curl_setopt_array($curl, array(
CURLOPT_URL => 'http://demo.shikkhaapp.com/api/homework-list/1',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer '.$bearerToken
),
));

您的Javascript请求没有将Authorization定义为Bearer令牌,您应该将标题定义为:

headers: {'Authorization': `Bearer ${user.token}`}

如果请求与Postman一起工作,您可以要求Postman生成客户端代码,并与您在React with axios中编写的网络请求进行比较。

尝试删除laravel或user.token中的承载令牌,因为您当前的令牌看起来像Bearer Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9

您的代币应仅包含在承载密钥上

抱歉,这只是一个CORS错误,后端开发人员起初并不同意。

最新更新