Laravel 页面已过期 419
Laravel Page Expired 419
部分初学者案例:
我有一个来自云端硬盘的上传视频表单,当我从中上传视频时,上传视频需要很多时间。上传完成后,它 return 我的 419 过期了。
所以我假设 csrf_token 在视频上传时已经更改,因此 csrf 不匹配并且 return 419 (?)
我已经做了一些测试,比如:
change App\Http\Middleware\VerifyCsrfToken at protected $execpt and added my post link, expired not comes out but it return 一个新问题未发送 post 数据。
我一直在考虑用 jquery 每隔 x 秒刷新一次 div {{csrf_token()}} 但我认为它会给我另一个后面的问题。
这是我的表格
<form method="POST" action="/video/insert" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-group">
<label for="judul">Judul</label>
<input name="judul" type="text" class="form-control" id="judul" placeholder="Input judul">
</div>
<div class="form-group">
<label for="informasi">Informasi</label>
<input name="informasi" type="text" class="form-control" id="informasi" placeholder="Input informasi">
</div>
<div class="form-group">
<label for="link">Link</label>
<input name="link" type="file" class="form-control-file" id="link" placeholder="Input Link">
</div>
<div class="form-group" hidden="">
<label for="status"></label>
<input name="status" type="text" class="form-control" id="status" placeholder="Input status" value="Tidak Aktif">
</div>
<div class="form-group" hidden="">
<label for="outletstatus"></label>
<input name="outletstatus" type="text" class="form-control" id="outletstatus" placeholder="Input outletstatus" value="Tidak Aktif">
</div>
<div class="form-group" hidden="">
<label for="type"></label>
<input name="type" type="text" class="form-control" id="type" placeholder="Input type" value="Server">
</div>
<div class="form-group" hidden="">
<label for="user_id"></label>
<input name="user_id" type="text" class="form-control" id="user_id" placeholder="Input user_id" value="{{auth()->user()->id}}">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Upload</button>
</div>
</form>
Web.php根据这个问题
Route::group(['middleware'=>['auth','checkRole:Admin,Pengguna']],function()
{ // Video Controller
Route::post('/video/insert','VideoController@insert');
});
控制器:
public function insert(Request $request){
$video = \App\Video::create($request->all());
function getName($n) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $n; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
}
if($request->type=='Server'){
$videoName = getName(10) . $request->file('link')->getClientOriginalName();
$request->file('link')->move('videos/',$videoName);
$video->link = $videoName;
}
else{
$video->link = 'https://www.youtube.com/embed/'.$request->link;
}
$video->type = $request->type;
$video->save();
return redirect('video')->with('status','Video berhasil ditambahkan!');
}
我的问题是:
我们有机会在视频上传后发送 csrf 令牌吗?所以csrf没有过期,你们有什么参考或解决这个问题的最佳方法吗?
谢谢。
您是否尝试过使用协议在受保护的 $except 变量中使用通配符
在关闭它之前检查是否有任何其他表单打开。
增加 config/session 中的会话生命周期。php
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
除了其他已回答的问题之外,另一个可以解决的问题是更改
upload_max_filesize = 70M post_max_size = 60M memory_limit = 50M
在 php.ini
文件中。
并检查网络服务器中的 connection_timeout
设置。
部分初学者案例:
我有一个来自云端硬盘的上传视频表单,当我从中上传视频时,上传视频需要很多时间。上传完成后,它 return 我的 419 过期了。
所以我假设 csrf_token 在视频上传时已经更改,因此 csrf 不匹配并且 return 419 (?)
我已经做了一些测试,比如:
change App\Http\Middleware\VerifyCsrfToken at protected $execpt and added my post link, expired not comes out but it return 一个新问题未发送 post 数据。
我一直在考虑用 jquery 每隔 x 秒刷新一次 div {{csrf_token()}} 但我认为它会给我另一个后面的问题。
这是我的表格
<form method="POST" action="/video/insert" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-group">
<label for="judul">Judul</label>
<input name="judul" type="text" class="form-control" id="judul" placeholder="Input judul">
</div>
<div class="form-group">
<label for="informasi">Informasi</label>
<input name="informasi" type="text" class="form-control" id="informasi" placeholder="Input informasi">
</div>
<div class="form-group">
<label for="link">Link</label>
<input name="link" type="file" class="form-control-file" id="link" placeholder="Input Link">
</div>
<div class="form-group" hidden="">
<label for="status"></label>
<input name="status" type="text" class="form-control" id="status" placeholder="Input status" value="Tidak Aktif">
</div>
<div class="form-group" hidden="">
<label for="outletstatus"></label>
<input name="outletstatus" type="text" class="form-control" id="outletstatus" placeholder="Input outletstatus" value="Tidak Aktif">
</div>
<div class="form-group" hidden="">
<label for="type"></label>
<input name="type" type="text" class="form-control" id="type" placeholder="Input type" value="Server">
</div>
<div class="form-group" hidden="">
<label for="user_id"></label>
<input name="user_id" type="text" class="form-control" id="user_id" placeholder="Input user_id" value="{{auth()->user()->id}}">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Upload</button>
</div>
</form>
Web.php根据这个问题
Route::group(['middleware'=>['auth','checkRole:Admin,Pengguna']],function()
{ // Video Controller
Route::post('/video/insert','VideoController@insert');
});
控制器:
public function insert(Request $request){
$video = \App\Video::create($request->all());
function getName($n) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$randomString = '';
for ($i = 0; $i < $n; $i++) {
$index = rand(0, strlen($characters) - 1);
$randomString .= $characters[$index];
}
return $randomString;
}
if($request->type=='Server'){
$videoName = getName(10) . $request->file('link')->getClientOriginalName();
$request->file('link')->move('videos/',$videoName);
$video->link = $videoName;
}
else{
$video->link = 'https://www.youtube.com/embed/'.$request->link;
}
$video->type = $request->type;
$video->save();
return redirect('video')->with('status','Video berhasil ditambahkan!');
}
我的问题是:
我们有机会在视频上传后发送 csrf 令牌吗?所以csrf没有过期,你们有什么参考或解决这个问题的最佳方法吗?
谢谢。
您是否尝试过使用协议在受保护的 $except 变量中使用通配符
在关闭它之前检查是否有任何其他表单打开。
增加 config/session 中的会话生命周期。php
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
除了其他已回答的问题之外,另一个可以解决的问题是更改
upload_max_filesize = 70M post_max_size = 60M memory_limit = 50M
在 php.ini
文件中。
并检查网络服务器中的 connection_timeout
设置。