[英]ETags for user-specific resources
我們在 REST API 中將ETag
標頭用於條件請求。 有些資源根據當前認證的用戶有不同的內容(有些用戶看的多,有些用戶看的少)。 ETag
當前是在“完整”資源上計算的,即所有用戶都獲得相同的ETag
,除非整個資源發生變化。 這不是問題,除非客戶端跨用戶會話緩存資源的ETag
,這似乎發生在瀏覽器中。 然后第二個用戶將看到第一個用戶的資源的緩存版本,因為服務器告訴客戶端/瀏覽器它沒有更改。 如果允許第一個用戶看到的內容多於第二個用戶,這甚至會變成一個安全問題。
我在互聯網上搜索,但沒有找到任何有關ETag
和用戶會話的信息。 是否有任何最佳實踐或建議如何處理此類情況?
這不僅僅是一種最佳實踐——如果資源的表示不同,該標准要求您發送唯一的 ETag:
“強驗證器”[例如 ETag] 是表示元數據,每當表示數據發生更改時,該元數據就會更改值,這些更改將在對 GET 的 200(OK)響應的有效負載主體中可觀察到。強驗證器是唯一的隨着時間的推移,跨越與特定資源關聯的所有表示的所有版本。
而且您提到的瀏覽器緩存問題實際上要嚴重得多,因為中間緩存也可以存儲數據,然后不恰當地向全世界的人們提供這些數據。
所以答案很簡單——為數據的每個不同表示計算一個唯一的 ETag。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.