2016-02-12 99 views
0

假設我暴露該承載令牌認證(JWT)使用,並響應與Cache-Control: private報頭中的GET請求一個REST服務(通過HTTPS)。緩存控制私人

現在假設我的應用程序在kiosk模式下使用(多個用戶使用同一個瀏覽器會話相同的操作系統用戶,認爲網吧或東西)。 User1向資源發出已認證的請求。

GET /api/resource 
Authorization: bearer <token1> 

響應始於:

HTTP/1.1 200 OK 
Cache-Control: private 

現在,用戶1的跡象了我的應用程序和用戶2跡象在瀏覽器中,使代表她到同一資源的請求(但有不同的智威湯遜令牌)。

GET /api/resource 
Authorization: bearer <token2> 

現在的問題是,將瀏覽器的考慮緩存服務這個,因爲它是從同一OS用戶相同的請求?或者瀏覽器會考慮這個決定中的價值嗎?

如果是前者,將在原來的響應Vary: Authorization頭改變這種行爲。

+1

需要注意的是,除非你設置'緩存控制:無store',從用戶的會話私有信息將保留在客戶端上。 – SilverlightFox

回答

2

根據RFC 2616, Section 14.9.1Cache-Control: private響應標頭確實意味着您的多個自助服務終端用戶共享相同的瀏覽器會話將獲得相同的緩存響應。

是的,添加一個Vary: Authorization響應標題將有所幫助,如RFC 2616的Section 13.6所示;它告訴緩存保持/來自不同資源的「交涉」的基礎上,在Vary響應報頭值列出的請求頭中選擇。

希望這有助於!