laravel框架 , 前台使用ajax提交表单数据,
当type: 'get'时,后台可以通过$request->user()->id 获取到用户id,
但是
当type: 'post'时,后台通过$request->user()->id 报错500.
routes.php
Route::group(['middleware' => 'web'], function () { Route::auth(); //这个url使用post报错 Route::get('/index/folder', "IndexController@folder"); });
controllder
public function folder(Request $request, FoldersRepository $FoldersRep) { return response($request->user()->id); }
js
$.ajax({ type: 'get', url: "/index/folder", data: formData, success: function (data) { console.log(data); debugger
请问这是怎么回事,如何解决?
默认post是要加token在ajax的headers里的.
你这个是路由只能接受get请求;
csrf令牌是必须携带的;
//1、你可以在heade头中设置
<meta name="csrf_token" id="token" content="{{csrf_token()}}">
//2、你可以在表单中设置
<input type="hidden" name="_token" value="{{csrf_token()}}">
//3、你可以在ajax数据中直接使用
$.ajax({
url: "route",
method: "POST",
data: { _token : {{csrf_token()}}},
dataType: "json"
});
//4、使用 laravelcollective/html package 生产表单,自动生产csrf令牌
storage目录
sudo chmod -R 777 YourPath/storage