You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从原生PHP迁移到Laravel时jQuery Ajax请求出现404错误

原生PHP迁移Laravel时Ajax请求404问题

正在从原生PHP迁移到Laravel,使用jQuery Ajax发起请求时遇到404错误,相关信息如下:

Ajax请求代码

console.log("Join Save TOken Func");
jQuery.ajax({
   type: "POST",
   url: "/app/controllers/router.php",
   data: { controller: 'api_token', action: action, token: Token, token_name: Token_name, expire_date: Expire_date, permissions: Permissions },
   cache: false,
   success: function(r) {
     ...

控制台错误信息

POST http://127.0.0.1:8000/app/controllers/router.php 404 (Not Found)

文件目录信息

  • JS文件存放路径:public\assets\js
  • router.php文件存放路径:app\controllers\router.php

此前访问非/public路径时曾出现问题,不确定是否与此相关。


问题原因及解决方法

  1. 核心原因:Laravel的架构不允许直接访问app目录下的文件,所有HTTP请求必须通过public/index.php入口,且需通过路由映射到控制器方法,直接请求app/controllers/router.php会被服务器拦截,返回404。

  2. 具体修复步骤:

    • 废弃原生的router.php,按照Laravel规范创建控制器(例如ApiTokenController),并在其中编写处理令牌保存的方法(例如saveToken)。
    • 在routes/web.php或routes/api.php中定义路由:
      // 示例:web路由
      Route::post('/api-token/save', [\App\Http\Controllers\ApiTokenController::class, 'saveToken']);
      
    • 修改Ajax请求的url为定义好的路由地址:
      url: "/api-token/save",
      
    • 处理CSRF验证:Laravel默认会验证POST请求的CSRF令牌,需在页面头部添加:
      <meta name="csrf-token" content="{{ csrf_token() }}">
      
      并在Ajax请求中添加请求头:
      headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
      },
      
  3. 补充说明:Laravel仅对外暴露public目录,所有前端资源、请求入口都需通过该目录,这也是你之前访问非/public路径出问题的根本原因。

内容的提问来源于stack exchange,提问作者santiago morales

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 06:45:38