Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在使用response.addCookie时,如何停止Jetty更改HTTP Expires头?_Java_Jakarta Ee_Cookies_Jetty - Fatal编程技术网

Java 在使用response.addCookie时,如何停止Jetty更改HTTP Expires头?

Java 在使用response.addCookie时,如何停止Jetty更改HTTP Expires头?,java,jakarta-ee,cookies,jetty,Java,Jakarta Ee,Cookies,Jetty,事实证明,在Jetty中,当您附加cookie时,它不仅会将cookie添加到HTTP响应头,还会更改Expires HTTP头的值 ((HttpServletResponse)response).addCookie(cookie); 我需要Jetty停止使用正确/正确的过期设置进行旋转 另一方面,它这样做有什么特别/好的理由吗?我的猜测是Jetty假设如果设置了cookie,那么内容总是动态的,因此应该设置为过期,这样就不会缓存它 更新:使用Jetty 8.1.8进行测试。v20121106

事实证明,在Jetty中,当您附加cookie时,它不仅会将cookie添加到HTTP响应头,还会更改Expires HTTP头的值

((HttpServletResponse)response).addCookie(cookie);
我需要Jetty停止使用正确/正确的过期设置进行旋转

另一方面,它这样做有什么特别/好的理由吗?我的猜测是Jetty假设如果设置了cookie,那么内容总是动态的,因此应该设置为过期,这样就不会缓存它


更新:使用Jetty 8.1.8进行测试。v20121106

刚刚浏览了Jetty 8代码库。 下面是代码库中的一些情况,其中Expires(作为HTTP响应头)被强制为一个值,或者如果存在,则被删除

  • 任何HTTP 206响应(根据RFC2616规范强制删除)
  • 使用org.eclipse.jetty.server.handler.MovedContextHandler(未设置时强制)
  • 在表单身份验证期间,如果需要通过调度处理(强制删除)响应错误
  • 表单身份验证质询响应期间(强制删除)
这就是Expires作为HTTP响应头的用法

但是,由于您指出这是的一部分,我想指出,还有一个Cookie spec Expires头,作为响应上的Set Cookie逻辑中的Cookie值字符串的一部分

如果值为0或更大,这将强制Cookie Expires标头。这样做是为了解决各种浏览器错误,这些错误在
Max Age=
到期之前都不遵守
Expires=
,Cookie值上也提供了这些错误

默认行为:

  • Cookie.setMaxAge(-1)将同时禁用
    Max Age=
    Expires=
  • Cookie.setMaxAge(0)将导致1970年1月1日的
    Expires=00:00:00 UTC
    (unix时代的开始)
  • Cookie.setMaxAge(60000)将导致
    过期=
    1分钟
版本1 Cookie行为(aka):

  • Cookie.setMaxAge(-1)将同时禁用
    Max Age=
    Expires=
  • Cookie.setMaxAge(0)将导致1970年1月1日
    Max Age=0
    Expires=00:00:00 UTC
    (unix时代的开始)
  • Cookie.setMaxAge(60000)将导致
    Max Age=60000
    过期=
    1分钟
如果先添加cookie,然后设置Expires,该怎么办。jetty还会搞砸吗?你用的是什么版本的jetty?啊!我本想添加jetty版本,但忘了,我使用的是上个月的最新版本(jetty 8.1.8.v20121106)。我应该检查是否有更新的版本(迫不及待9出来)列表版本9是稳定的。看起来你不能在添加cookie后重新调整标题。太棒了!我认为会有一些怪癖导致这种行为被内置。但愿我能多投你一票(:不是在几秒钟内吗?即60000将是1000分钟而不是1分钟?