簡體   English   中英

#laravel 419 錯誤出現提交任何形式此問題僅在 GoDaddy 托管在其他托管應用程序上工作正常

[英]#laravel 419 error appear submission of any form this problem only on GoDaddy hosting on other hosting app works fine

這是我遇到的 419 錯誤模式

  • 在應用程序中登錄
  • 登出
  • 再次登錄
  • 再次登出時出現419錯誤

登錄后,當我單擊任何鏈接(該呼叫路由)時,會發生 419,尤其是當我嘗試刪除任何記錄時,會出現此錯誤,根據我在此錯誤期間的發現,我意識到在會話中的每個表單提交令牌存儲已更新但令牌在表單提交請求中作為隱藏字段傳遞的不是更新,這是令牌不匹配的原因

我做了什么來解決這個問題?

目前我使用的是laravel 5.7.28 版本,我嘗試在其他共享托管應用程序上使用相同的應用程序工作正常。
我只在 GoDaddy 主機上遇到 419

1.

我注釋掉

    //      \App\Http\Middleware\VerifyCsrfToken::class,

從 kernel.php 419 錯誤消失,但通過在登錄后執行此操作,當我單擊任何鏈接時,我在登錄屏幕上重定向意味着會話已被破壞

2.

我也重新生成了應用程序密鑰

    APP_KEY=base64:8NYbcWPkEaj5oVHEGBWxCaFVHQhkgA/OOZyFPBiDMYQ=

3.

在 session.php 文件中

    'http_only' => false,

4.

會話在 storage/framework/session.php 中正確敘述,我分配權限 777

5.

在這里輸入代碼

然后我嘗試手動調試會話

    vendor/laravel/framework/src/Illuminate\Foundation\Http\Middleware


    public function handle($request, Closure $next)
        {
    
     echo "<pre>";
            print_r($this->getTokenFromRequest($request));
            echo "</pre>";
    
    
            echo "<pre>";
            print_r($request->session()->token());
     echo "</pre>";
    die()
            if (
                $this->isReading($request) ||
                $this->runningUnitTests() ||
                $this->inExceptArray($request) ||
                $this->tokensMatch($request)
            ) {
                return tap($next($request), function ($response) use 
       ($request) {
                    if ($this->shouldAddXsrfTokenCookie()) {
                        $this->addCookieToResponse($request, $response);
                    }
                });
            }
    
            throw new TokenMismatchException;
        }


csrf 令牌存儲在會話中並在每次提交表單時更新


    $request->session()->token();

但表單提交 $request 中的令牌存儲保持不變/靜態不會更改/更新


    $this->getTokenFromRequest($request);

這實際上是令牌不匹配的原因,它以錯誤 419 的形式引發異常

6.


在每個表單上正確使用 @scrf 令牌,我還替換了 {{csrf_filed() }}


7.

還運行 composer update 命令

8.

在不同的瀏覽器上運行應用程序

9.

注釋掉

    //\App\Http\Middleware\VerifyCsrfToken::class in \app\Http\Kernel.php

雖然我提交了上面的文件 419 消失但是當我點擊任何鏈接會話被破壞時,注銷並返回登錄頁面 注釋掉

     //\Illuminate\Session\Middleware\AuthenticateSession::class 


\app\Http\Kernel.php

.env 文件代碼


    APP_NAME=Laravel
    APP_ENV=local
    APP_KEY=base64:8NYbcWPkEaj5oVHEGBWxCaFVsQhkgA/OOZyFPBiDMYQ=
    APP_DEBUG=true
    APP_URL=http://localhost
    
    LOG_CHANNEL=stack
    
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=ltcsar
    DB_USERNAME=root
    DB_PASSWORD=
    
    BROADCAST_DRIVER=log
    CACHE_DRIVER=file
    QUEUE_CONNECTION=sync
    SESSION_DRIVER=file
    SESSION_LIFETIME=120
    
    REDIS_HOST=127.0.0.1
    REDIS_PASSWORD=null
    REDIS_PORT=6379+
    
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=null
    MAIL_PASSWORD=null
    MAIL_ENCRYPTION=null
    
    PUSHER_APP_ID=
    PUSHER_APP_KEY=
    PUSHER_APP_SECRET=
    PUSHER_APP_CLUSTER=mt1
    
    MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
    MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

我遇到了同樣的問題,它是 laravel 5.7.2 的問題,我已經安裝了 framework v 5.7.9,問題將消失。

應用\\Http\\Middleware\\TrustProxies.php

update protected $proxies; --> protected $proxies = '*';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM