laravel中TokenMismatchException異常處理


在使用post或者put等方法請求時,有時會報TokenMismatchException in VerifyCsrfToken.php line 67錯誤。原因是laravel默認開啟了防CSRF。
要解決該問題有兩種方式,一種是在請求時將token值也提交過去,另一種是在防CSRF時排除所請求的路由

方法一:將token值傳遞過去
表單提交時:

<form action="photo/12" method="post">
        <?php echo method_field('PUT'); ?>
        <?php echo csrf_field(); ?>
        <input type="submit" name="提交" />
    </form>

使用AJAX請求時:

<meta name="csrf-token" content="{{ csrf_token() }}">

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});


方法二:從 CSRF 保護中排除指定 URL
比如所訪問的URL為http://laravel.com/photo/12,現在想排除關於photo資源的路由,則在App\Http\Middleware\VerifyCsrfToken::class中添加路由如下:

protected $except = [
        'photo',
        'photo/*',
    ];


注意,方法二將無法對photo相關路由進行CSRF防護,所以請根據實際情況選擇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM