簡體   English   中英

用戶特定資源的 ETag

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM