我正在使用相同的标头(包括Bearer)将GET请求发送到相同的端点,但是当我从Postman调用时得到200和正确的JSON作为结果时,当我在我的(Vue中使用Axios发送请求时)项目,我得到302。
在localhost:8080上运行的本地项目的调用(如果有用)如下:
const { authToken, userID } = store.getters.authUser
const config = {
method: 'get',
url: '/' + userID,
headers: {
Authorization: `Bearer ${authToken}`,
'Content-Type': 'application/json'
}
}
axios(config)
.then(res => {
console.log(res)
return res
})
.catch(e => {
console.log(e)
})
在邮递员中,我所要做的就是使用相同的url创建一个GET请求,并且我在标头中添加的所有内容都是“ Bearer ...”。
我从axios得到的错误是:
Error: Network Error
at createError (createError.js?2d83:16)
at XMLHttpRequest.handleError (xhr.js?b50d:87)
响应状态为302,知道这里发生了什么事吗?
userID
和authToken
的值都存在,并且等于邮递员使用的相同值,URL也相同
答案 0 :(得分:0)
如你所说
请求转到另一台服务器
我的最佳猜测是,执行axios调用的页面与axios请求中请求的资源位于不同的域中。这意味着该请求是跨源请求。在那种情况下,浏览器将执行preflight request(由于存在Authorization
标头,因此在CORS意义上,GET请求不是simple request)。在这种情况下,您的资源需要支持CORS,这意味着您需要设置Access-Control-Allow-Origin
标头,并且需要为预检请求处理OPTIONS
HTTP方法。