【问题标题】:How to debug unwanted 302 redirect from Ajax request?如何从 Ajax 请求中调试不需要的 302 重定向?
【发布时间】:2022-01-07 12:33:30
【问题描述】:

我正在尝试通过这个 ajax 请求从数据库中获取数据:

axios.get('/about-info')

web.php

Route::get('/about-info', [CMSController::class, 'aboutInfo']);

CMSController.php

public function aboutInfo()
{
    $data = DB::table('about_info')->first('order by id desc');
    return $data;
}

但是我得到了整个welcome.blade.php 内容。看起来web.php 中的url 没有被调用,而是发生了重定向。开发工具网络选项卡显示 302 重定向。

This thread 似乎对这个问题有见解。我一直在尝试实现答案 3(将 accept: 'application/json 添加到请求的 config/headers 对象中)但该对象已经具有该条目:

config:
    headers:
        Accept: "application/json, text/plain, */*"

This guideauth middleware 可能是导致此问题的原因,但我没有使用middleware(至少我不知道)。知道如何找到它的根源吗?

【问题讨论】:

  • 查询应该像DB::table('about_info')->orderBy('id', 'desc')->first() 以遵循雄辩的约定,并且您的回复:return response()->json(['data' => $data]);,确保您的控制器顶部有use DB;,等等。我不认为你' 收到错误(应该是 500,而不是 302),并且它不应该默认使用任何身份验证中间件。如果您手动导航到 http://localhost:8000/about-info(或您的应用的任何 URL),您会看到什么?
  • @TimLewis 我确保这些东西都到位并编辑了return 声明,但没有任何改变。我没有收到错误,就像我在帖子中写的那样,dev tools network 选项卡显示了302 redirect。当我导航到http://localhost:8000/about-info 时,我收到welcome.blade.php(索引页)作为data 的响应。

标签: ajax laravel vue.js http axios


【解决方案1】:

您是否尝试过将路由移至您的 api 路由文件? Web 命名空间中的所有路由都会接收会话状态、CSFR 以及可能会阻碍的更多信息(即“新会话,转到欢迎屏幕!”)。

这会将您的 URL 路径更改为:

axios.get('/api/about-info')

【讨论】:

  • api 添加到url 不会带来任何变化。还有什么我可以尝试的吗?
  • 我认为我的回答并不完全清楚。将此操作的路由定义移出您的 web.php 路由文件,并将其移至您的 api.php 路由文件。之后,您可以在 URL 前面加上 api 前缀。综上所述,我在下面看到您找到了解决方案。
【解决方案2】:

原来web.php 由于缓存问题根本无法工作。运行:

php artisan route:clear

让它再次工作并显示所有问题,在清除缓存之前无法检测到。

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 2012-06-25
    • 2011-10-15
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多