据我了解的规格,RFC 2616(HTTP/1.1)中引入的ETag是Last-Modified-Header的后继产品,它可以让软件架构师更好地控制它.缓存重新验证过程.
如果存在Cache-Validation-Headers(If-None-Match和If-Modified-Since),则根据RFC 2616,客户端(即浏览器)在检查资源时是否应使用ETag.根据RFC 2616的第14.26节,如果If-None-Match-Header中出现的ETag已更改,则服务器不得以304 Not Modified响应,并且服务器必须忽略其他If-Modified-Since-Header ,如果有的话.如果呈现的ETag匹配,则他不得执行请求,除非Last-Modified-Header中的Date表示如此.(如果提供的ETag匹配,服务器应该在GET或HEAD请求的情况下响应304 Not Modified ...)
这部分为一些猜测留下了空间:
...好的当我写这篇文章的时候,问题就是这个答案:
上面提到的(小)矛盾是因为弱ETag.标有弱ETag的资源可能已经改变,尽管ETag没有.因此,在弱ETag的情况下,当ETag没有改变时回答304 Not Modified是错误的,但是If-Modified-Since中呈现的日期不匹配,对吧?
我在我的生产环境中使用Tomcat,在我的测试环境中使用jetty(通过jetty-maven-plugin).
Tomcat在jsessionid-cookie上设置安全标志,当它通过安全通道(https)发送时,对我来说这看起来是个好主意,因为当用户点击http时它会阻止会话暴露:// - 链接.但Jetty不是这样!
我想迫使码头的行为,如Tomcat,始终设置安全标志上JSESSIONID饼干送过来的安全通道,因为否则的话,我的测试环境的行为相当不同势,然后我的生产环境.但我找不到任何配置选项来实现这个目标.
我也想知道,如果这是Jetty中的安全漏洞.因为没有标记jsessionid-cookie通过安全通道发送,因为安全会在用户切换回不安全通道时显示安全会话.
我有一个Criteria-Query,它连接第二个表B,从表A中选择实体.问题是,这个查询多次从表A返回一些实体.但我需要结果是截然不同的.
使用Criteria.DISTINCT_ROOT_ENTITY是没用的,因为这会在执行SQL-Query后过滤掉多次出现.因此,当我将结果限制为20次点击时,我最终只有4次,尽管有更多条目符合我的查询.
在纯SQL中我只是可以向查询添加"GROUP BY ID",一切都很好,因为只使用表B的连接,从表A中选择实体.但是使用Criteria-API我不能这样做.添加"GROUP BY"的唯一方法是使用Projections.但是,我最后得到的是标量值,而不是我班级的真实实例.使用SQL限制也不起作用,因为hibernate在我的"GROUP BY"-clause之后添加了一个含糊的"1 = 1".:(
有任何想法吗?