9
我們的生產服務器現在已經生成了幾個月的無效真實性令牌錯誤。幾乎所有發送(PUT | POST | DELETE)請求的表單都會產生這些錯誤。有時會出現錯誤,有時候不會。至於它們爲什麼會出現,似乎沒有任何押韻或理由。錯誤本身並不經常發生,但這是我們的擔心。以下是導致此錯誤的典型表單的示例。調試隨機無效的真實性令牌錯誤
<form class="button_to" method="post" action="/lesson_progress_trackers/333">
<input type="hidden" name="_method" value="patch">
<input class="finish-lesson-button" type="submit" value="Done!">
<input type="hidden" name="authenticity_token" value="Qd3FsJZY2UXR9vahuFmaY5rrqA+J5xzGpl4cGI2Vwerx8PZPQtDMugz6oqoe3iviC+/U5zTYPdeX3apwbap09E==">
<input type="hidden" name="completed" value="true">
</form>
這是我到目前爲止發現的。
- 我們使用Turbolinks 2.5.3(我們還沒有在一年內更新過)。
- 在每一次無效令牌錯誤的情況下,用戶都會向服務器傳遞一個真實令牌,它最終會失效。
- 我們目前在我們的應用控制器中使用
protect_from_forgery with: :exception
。 - 幾個月前,當我們將一堆新代碼投入生產時,錯誤開始出現。這個新的代碼跨越數百個文件,但到目前爲止,我沒有在代碼中發現任何與此問題相關的文件。
- 錯誤可能發生在任何類型的瀏覽器和設備上。
- 流量增加與出現無效驗證令牌之間沒有關聯。
- 用戶可以來自任何國家。
- 這些不是遇到這些問題的機器人。我們甚至有同事遇到這個錯誤,儘管他們不記得他們做了什麼來製作它。
- 用戶遵循典型的如果不是預期的行爲。他們按照預期使用應用程序。我瀏覽了他們的點擊並記錄了行爲歷史來總結這一點。
最終我想弄清楚如何解決這個問題。我的第一步是成功重現錯誤,但我甚至無法做到這一點。我的問題是:我能做些什麼來幫助我找出造成這種情況的原因?我沒有選擇。謝謝!
是的,我做到了。這發生在真實的用戶身上。這些不是機器人。我發現的模式是典型的用戶行爲。他們在做什麼沒有任何異常。我願意說這是預期的行爲。這就是爲什麼它很可怕。 – jason328
你能排除任何過期嗎?餅乾只是一件事,它可能是一些與時間相關的比較,服務器的錯誤時間,預計特定時間的數據庫字段或類似的東西。 – Smar
我不這麼認爲?你能澄清一下你的問題嗎? – jason328