在 HeroKu 上的 Laravel 專案突然爆掉 419 page expired 的解決方案

栏目: PHP · 发布时间: 5年前

内容简介:最近在部署專案到 HeroKu 上的時候,發生這樣莫名其妙的案例,於是將整個案例寫成文檔紀錄,之前介紹過把 Laravel 專案部署到 HeroKu 上的方法,這次要來分享在 HeroKu 上維護專案時,所發生的離奇案件。將 Laravel 部署到 HeroKu 上的教學:

在 HeroKu 上的  <a href='https://www.codercto.com/topics/5169.html'>Laravel</a>  專案突然爆掉 419 page expired 的解決方案

可憐的案例

大大救命啊啊啊啊啊啊!我的網站剛剛明明是好的,現在卻壞了,但我都沒有做任何事情,他就突然壞了!我把 Session 清掉,把 Cache 也清掉,把所有暫存都清掉,他終究告訴我 419 Page Expired,我把整個 HeroKu 都重啟,甚至整個專案都回滾到最初始的狀態,他都沒辦法救活,結果在本機端、開測試機卻正常運行,明明一模一樣的程式碼、一模一樣的所有配置啊!為什麼只有正式機會掛掉?跪求解答 20 點,急急急急急急。

  • 資料來源來自我的案發經歷

最近在部署專案到 HeroKu 上的時候,發生這樣莫名其妙的案例,於是將整個案例寫成文檔紀錄,之前介紹過把 Laravel 專案部署到 HeroKu 上的方法,這次要來分享在 HeroKu 上維護專案時,所發生的離奇案件。

將 Laravel 部署到 HeroKu 上的教學: 如何將你的 Laravel boilerplate 專案成功部署到 HeroKu · 乾太 Kantai

419 Page Expired

在 HeroKu 上的 Laravel 專案突然爆掉 419 page expired 的解決方案

基本上有學過 Laravel 的大家們,都知道 419 這個錯誤跟 CSRF 有關,我們正常會認為這可能是前台的 CSRF 過期了,導致使用者運行時把 TOKEN 丟到後端,中介層認為這 TOKEN 過期或無法驗證通過,而 Response HTTP CODE 419,所以在此我有一個大膽的想法,那就是去 VerifyCsrfToken.php 把所有的路由都取消 CSRF 認證,大概是這個樣子:

...
    /**
     * The URIs that should be excluded from CSRF verification.
     *
     * @var array
     */
    protected $except = [
        '*',
    ];
...

在 Laravel 當中如何取消 CSRF 的認證: 在 Laravel 當中,如何移除特定 Router 的 CSRF? · 乾太 Kantai

取消 CSRF 驗證後,表單成功送出去了,伺服器也沒有出現 419 Page Expired,但結果是伺服器並沒有做任何與資料新增有關的動作,這就奇怪了呀,所以使用者端沒問題,伺服器也是沒問題的,最有可能有問題的地方可能在於資料庫這個部分,這時候我們打開 HeroKu JawsDB Maria 的 Plans 定價頁面(這邊我們以 JawsDB Maria 為例)。

HeroKu JawsDB Maria: JawsDB Maria - Add-ons - Heroku Elements

在 HeroKu 上的 Laravel 專案突然爆掉 419 page expired 的解決方案

HeroKu 會告訴你 Storage Capacity 5 MB,表面上意思是整個資料庫的容量給你 5 MB 的大小,但實際上可能是寫入的量,所以才會導致刪除可以運行,但要寫入新的資料就無法,而網站運行一段時間後,因為寫入的量過多了,所以 CSRF 的 Token 無法繼續寫入資料庫的 Sesstion 當中,而 Laravel 在驗證 CSRF 的時候找不到相對應的資料,才會回覆你 419 Page Expired。

解決方案

  1. 課金 就這麼簡單,你只要把你的 HeroKu JawsDB 的 Plans 方案從 Free 升級,問題馬上就解決了。

  2. 改其他 Database 今天的問題主要是你目前連線的 Database 無法繼續寫入資料了,你只要改其他的服務,無論是 AWS、GCP 或自架,就可以解決這問題。

後記

這是一項很奇耙的問題,解決方案很簡單,但卻無法得知為什麼而出錯,找出解決方案有點靠經驗、觀落陰去解決,最重要的是 HeroKu 並沒有任何通知,他並不會寄封 Email 或系統跳通知來通知你的 Database 某項限制快抵達上限,這點我覺得是 HeroKu 需要修改的方向,不過對於開發、維護人員來講,可能先能夠找到問題、解決問題,才是首要目標吧,所以寫了這篇來紀錄。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

白帽子讲Web安全

白帽子讲Web安全

吴翰清 / 电子工业出版社 / 2012-3 / 69.00元

《白帽子讲Web安全》内容简介:在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?《白帽子讲Web安全》将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在《白帽子讲Web安全》中找到答案。详细的剖析......一起来看看 《白帽子讲Web安全》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换