Php laravel 5.5由于不活动,该页面已过期。请刷新并重试
我是拉雷维尔的新人,我有一个我不明白的问题。 我的项目中有一个日志表格,我的方法是POST。当我尝试一个请求时,结果是: '由于不活动,该页已过期。请刷新并重试 再来一次。” 但是如果我将方法更改为GET,它就可以正常工作Php laravel 5.5由于不活动,该页面已过期。请刷新并重试,php,laravel,Php,Laravel,我是拉雷维尔的新人,我有一个我不明白的问题。 我的项目中有一个日志表格,我的方法是POST。当我尝试一个请求时,结果是: '由于不活动,该页已过期。请刷新并重试 再来一次。” 但是如果我将方法更改为GET,它就可以正常工作 有人能告诉我为什么会这样以及如何修复它吗?因为我当然需要POST方法。这个问题来自CSRF令牌验证失败。所以要么你没有发布,要么你发布了一个错误的 它对GET有效的原因是,对于Laravel中的GET路由,没有发布CSRF令牌 您可以通过以下方式在表单中发布CSRF令牌: {
有人能告诉我为什么会这样以及如何修复它吗?因为我当然需要POST方法。这个问题来自CSRF令牌验证失败。所以要么你没有发布,要么你发布了一个错误的 它对GET有效的原因是,对于Laravel中的GET路由,没有发布CSRF令牌 您可以通过以下方式在表单中发布CSRF令牌:
{{ csrf_field() }}
或者在app/Http/Middleware/VerifyCsrfToken.php
中排除您的路由(由于安全原因不推荐):
protected $except = [
'your/route'
];
在我的例子中,我得到了相同的错误消息,然后发现我没有为表单字段添加
csrf\u令牌。然后添加csrf\u令牌
使用将
{{ csrf_field() }}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
或者如果没有表单帮助程序
{{ csrf_field() }}
<input type="hidden" name="_token" value="{{ csrf_token() }}">
我也有同样的问题。在chrome中使用“清除浏览数据”。也许可以解决您的问题。发生这种情况是因为您使用的是Laravel安装的默认CSRV中间件。要解决此问题,请从Kernel.php中删除以下行:
\App\Http\Middleware\VerifyCsrfToken::class,
如果您正在构建一个API,这是很好的。但是,如果你正在构建一个网站,这是一个安全验证,所以要注意它的风险。在我的例子中,同样的问题是因为我忘记在我隐藏的输入字段末尾添加
,就像这样:这很有趣,但对我来说很有用。我意识到这是由于laravel代码中默认的HTML标记造成的。
改用/**/或{--}
或者尝试删除代码中最近出现的Html内容。。。
或者将Html注释更改为Php注释。。。
或者尝试运行任何Worng artisan命令,如php artisan clean browser,查看它是否输出任何HTML注释数据以及错误…只需将此代码放在表单中即可
<input type = "hidden" name = "_token" value = "<?php echo csrf_token() ?>" />
我们通过从Router.php复制路由(而不是使用Auth::routes())使其正常运行,以下是您需要的路由:
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');
// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');
在应用程序中定义HTML表单时,应在表单中包含隐藏的CSRF令牌字段,以便CSRF保护中间件可以验证请求。您可以使用csrf\u字段
helper生成令牌字段:
<form method="POST" action="/profile">
{{ csrf_field() }}
...
</form>
{{csrf_field()}}
...
它不工作,然后刷新浏览器缓存,现在可能工作
有关更多详细信息,请打开链接:-
更新:
使用刀片模板的Laravel5.6非常简单
<form method="POST" action="/profile">
@csrf
...
</form>
@csrf
...
有关更多详细信息,请打开链接:-验证config/session.php文件是否包含此行
'domain' => env('SESSION_DOMAIN', null),
然后删除.env文件中的SESSION\u域
行我遇到了相同的错误,所以我刚从.env文件中删除了这一行
SESSION_DRIVER=yourwebsite.com在我的例子中,我添加了ob_start();在服务器上我的index.php的顶部,一切似乎都很正常。如果设置了配置:SESSION\u DRIVER=file
您必须检查会话目录是否可写。检查存储/framework/session
将{{csrf_field()}}
放入表单中
标记
我知道这个问题已经得到了令人满意的回答,但我想提及一个在我的案例中有效的修复方法。我添加了{{csrf_field()}}
,但仍然不起作用
然后我记得我出于开发目的阻止了所有cookie,这在您更改页面并希望刷新页面时非常好
一旦我更改设置以停止阻止MS Edge browser中的所有Cookie,问题就消失了。尝试了不同的解决方案几个星期都没有成功
我所面临的问题是由于从Laravel5.0升级到5.5而忘记更新config/session.php造成的
如果有人遇到此问题,请尝试更新config/session.php以匹配您正在运行的Laravel上的版本如果有人遇到此问题,请在表单中使用以下代码,如下所示
echo '<input type = "hidden" name = "_token" value = "'. csrf_token().'" >';
echo';
我的问题通过在表单标签中添加@csrf
解决了
Laravel 5.6
不支持{{csrf\u field()}
只需添加@csrf
来代替{{csrf\u field()}
larvel\u fix\u error.png
进入
App/Kernel.php
和注释
\App\Http\Middleware\VerifyCsrfToken::class
如果您已经在表单中包含CSRF令牌。然后,您将获得错误页面,这可能是因为表单中的缓存数据
打开终端/命令提示符,并在项目根目录中运行这些命令
php artisan缓存:清除
php artisan配置:清除
php工匠路线:清除
php artisan视图:清除
在运行这些命令的同时,尝试清除浏览器缓存。只需在表单标记中添加@csrf
或者您可以在标头中包含csrf\u令牌
,以便随每个请求一起发送
您的表单中可能没有csrf令牌。您必须使用@crsf
或{{csrf_field()}}
如果您在表单上使用csrf。可能是缓存。清除应用缓存
php artisan cache:clear
php artisan view:clear
php artisan cache:clear
并清除浏览器缓存
如果错误再次出现,请创建一个新密钥
php artisan key:generate
首先,在表格中加入csrf
{{ csrf_field() }}
如果问题没有解决,则使用ob_start()
在index.php的最开始处
<?php ob_start();
如果您
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'stripe/*',
'http://example.com/foo/bar',
'http://example.com/foo/*',
];
}