猿问

消息:“CSRF 令牌不匹配。”,异常:

我是一名 PHP 开发人员,目前正在根据我的任务转向 Laravel 框架,我必须使用 ajax 完成实时表,但我仍然遇到一个错误,即 CSRF 令牌不匹配错误,请帮助我解决我仅发布短代码的错误


JAVA脚本


<script>


 function getMessage() {

        $.ajax({

           //var data = {"_token": $('#token').val()},

           type:'POST',

           url:'/getMsg',

           headers: {'XSRF-TOKEN': $('meta[name="_token"]').attr('content')},

           success:function(data) {

              $("#msg").html(data.msg);

           }

           

        });

        

     }

    

  </script>

路线路径


Route::post('/getMsg','CustomerSearchController@doAjaxTest');

控制器代码


public function doAjaxTest(){

    $msg = "<b>Message over ajax This test is Successful</b>.";

    return response()->json(array('msg'=> $msg), 200);

}

HTML代码


<center>

 

 <input type = "hidden" name = "_token" value = '<?php echo csrf_token(); ?>'>

 <table>

 <tr>

 

 <td><label>Enter Place Name</label></td>

 <td><input type="text" class="form-control" id="placename" name="placename" placeholder="Name Of Place"/></td>

 </tr>

 <tr>

 <td>

 <input type="submit" value="Get Message" onclick="getMessage()" />

 </td>

 </tr>

 </table>


 <br>

 <!--

 <div class="panel panel-default table-responsive">

            <div id="dataTag"><b>All the Details according to department will be displayed</b></div>

            

      </div>

 -->

 <div id = 'msg'>This message will be replaced using Ajax. 

     Click the button to replace the message.</div>

  </center>

我不知道为什么当标头包含令牌时它会显示 CSRF 令牌不匹配,一旦解决我就可以进行一些实时操作,请帮忙


杨魅力
浏览 261回答 3
3回答

一只名叫tom的猫

确保视图头部有元标记:<meta name="csrf-token" content="{{ csrf_token() }}" />然后你可以在加载 jQuery 库后初始化一次,添加:<script type="text/javascript">$.ajaxSetup({&nbsp; &nbsp; headers: {&nbsp; &nbsp; &nbsp; &nbsp; 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')&nbsp; &nbsp; }});</script>尝试使用解决方案

浮云间

我有同样的问题。我将.env 文件中的APP_NAME更改为默认值(Laravel)。尝试一下。

HUX布斯

如果您已经配置了标头但仍然不起作用,请尝试创建一个新密钥:php&nbsp;artisan&nbsp;key:generate
随时随地看视频慕课网APP
我要回答