Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel 5.5由于不活动,该页面已过期。请刷新并重试_Php_Laravel - Fatal编程技术网

Php laravel 5.5由于不活动,该页面已过期。请刷新并重试

Php laravel 5.5由于不活动,该页面已过期。请刷新并重试,php,laravel,Php,Laravel,我是拉雷维尔的新人,我有一个我不明白的问题。 我的项目中有一个日志表格,我的方法是POST。当我尝试一个请求时,结果是: '由于不活动,该页已过期。请刷新并重试 再来一次。” 但是如果我将方法更改为GET,它就可以正常工作 有人能告诉我为什么会这样以及如何修复它吗?因为我当然需要POST方法。这个问题来自CSRF令牌验证失败。所以要么你没有发布,要么你发布了一个错误的 它对GET有效的原因是,对于Laravel中的GET路由,没有发布CSRF令牌 您可以通过以下方式在表单中发布CSRF令牌: {

我是拉雷维尔的新人,我有一个我不明白的问题。 我的项目中有一个日志表格,我的方法是POST。当我尝试一个请求时,结果是:

'由于不活动,该页已过期。请刷新并重试 再来一次。”

但是如果我将方法更改为GET,它就可以正常工作


有人能告诉我为什么会这样以及如何修复它吗?因为我当然需要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/*',
        ];
    }