大約從本月開始(2021年9月),我們正在構建的網路應用程式開始間歇性地顯示錯誤頁面。我們已經追蹤到這是與 HTTP 回應快取有關的問題,但是我們在這段時間內所做的代碼修改都沒有包含與之相關的修改,所以我們懷疑這是由 Chromium 93 更新引起的。
93版Chromium有什么已知的問題嗎?
uj5u.com熱心網友回復:
我們設法追蹤了這個問題--事實上,這不是Chromium的問題,而是我們自己的代碼中一個多年的問題,已經有很長一段時間沒有注意到了。
快取控制:max-age=0 must-revalidate
這并不遵循這個特定頭的規范,即。
快取指令有以下規則才有效:
- 不區分大小寫,但建議使用小寫。
- 多個指令是逗號分隔的。
- 有些指令有一個可選的引數,它可以是一個標記,也可以是一個引號字串。(定義見規范)
。
換句話說,它應該是一個逗號分隔的指令串列,即
。Cache-Control: max-age=0, must-revalidate
這(正確地)打破了由于Chromium的更新,如預期。該更改集顯示了一個更新,它使 Chromium 在解釋 Cache-Control 頭時更加嚴格,特別是對于我們的案例,可以通過以下(新!)單元測驗來確定:
TEST_F(HttpResponseHeadersCacheControlTest, MaxAgeWithInterimSpaceIsRejected) {
InitializeHeadersWithCacheControl("max-age=1 2"/span>)。
EXPECT_FALSE(headers()->GetMaxAgeValue(TimeDeltaPointer()) )。
這樣看來,這段代碼最初被解釋為
Cache-Control: max-age=0
但是在最近的Chrome版本中,現在完全被忽略了。
在我們的代碼庫中,確保Cache-Control頭是以逗號分隔的,從而解決了這個問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/311292.html
標籤:
上一篇:瀏覽器擴展清單權限V3
