E-Tags for user-specific resources

问题描述 投票:0回答:1

我们在REST API中将ETag标头用于条件请求。根据当前经过身份验证的用户,某些资源具有不同的内容(某些用户查看更多信息,而其他用户查看较少信息)。当前,ETag是在“全部”资源上计算的,即,除非整体资源发生变化,否则所有用户都将获得相同的ETag。除非客户端跨用户会话缓存资源的ETag(这似乎发生在浏览器中),否则这不是问题。由于服务器告诉客户端/浏览器它没有更改,因此第二个用户将从第一个用户看到资源的缓存版本。如果允许第一个用户看到的内容比第二个用户多,那么这甚至可能导致安全问题。

我正在搜索Internet,但未找到有关ETag和用户会话的任何信息。是否有任何最佳做法或建议来处理此类情况?

rest http authentication caching etag
1个回答
0
投票

这不仅仅是最佳实践,如果资源的表示形式不同,standard 需要您将发送唯一的ETag:

“强验证器” [例如ETag]是表示元数据,只要在对GET的200(OK)响应的有效载荷主体中可观察到的表示数据发生更改,它就会更改值。在一段时间内,与特定资源相关联的所有表示形式的所有版本都是唯一的。

您在浏览器缓存中注意到的问题实际上要严重得多,因为中间缓存也可以存储数据,然后将其不适当地提供给全世界的人们。

所以答案很简单-为数据的每种不同表示形式都计算一个唯一的ETag。

© www.soinside.com 2019 - 2024. All rights reserved.