尽管响应为 200,但 Axios 状态为 449
Posted
技术标签:
【中文标题】尽管响应为 200,但 Axios 状态为 449【英文标题】:Axios status is 449 despite response being 200 【发布时间】:2022-01-22 21:56:55 【问题描述】:我有一个端点/sales/internalorders/5
,当我直接在浏览器/curl/等中打开它时,它会返回200
。它以application/json
正确返回。
端点由 Laravel 提供,它将来自控制器的数据提供为:
return response()->json(['data' => $return], 200);
我在我的 Vue 组件的 mounted()
挂钩中调用它:
axios.get('admin/sales/internalorders/'+this.$route.params.id)
.then((response) => console.log(response))
.catch(error=>console.log(error))
虽然response.request.status
是200,但response.status
正在返回449
并且response.data
未设置:
已编辑说明数据正在由 Laravel 准备
【问题讨论】:
您将不得不向我们提供有关所有这一切的服务器端组件的更多信息。 Vue/Axios 没有设置 449 响应,你的 API/服务器是。 谢谢@ceejayoz - 我已经编辑表明它是由 Laravel 返回的。如果是服务器端的问题,直接打开端点给200是不是很奇怪? 我从来没有让 Laravel 返回没有自定义代码的 449;responseText
中的“不幸的是我们找不到...”看起来您正在构建某种自定义错误处理。
这是端点返回的数据,而不是响应对象属性。端点获取内部 url 并将响应代理到网络。
@ceejayoz 你在正确的轨道上 - 我们应该使用响应宏而不是 response()->json()
并且 Axios 已被覆盖!
【参考方案1】:
这里的问题是 Axios 已被覆盖并且有一个我们应该使用的自定义 Laravel 响应宏。
这显然是为了在整个应用程序中标准化错误消息?
感谢@ceejayoz,他走在了正确的轨道上!
【讨论】:
以上是关于尽管响应为 200,但 Axios 状态为 449的主要内容,如果未能解决你的问题,请参考以下文章
Azure APIM 在预检和从 axios 发出的 GET 请求时返回空响应正文,状态代码为 200
在 Axios 中收到 400 个错误请求,但 Postman 状态为 200
即使响应为 200(成功),也会调用 Axios Catch