我注意到Glassfish-5 web服务器只发送一个Set-Cookie头的响应,其中包含几个cookie。当我用萤火虫看的时候,我可以看到它们被未知的字符分开了。无论如何,Firefox只读取第一个cookie。如何配置Glassfish5以发送多个Set-Cookie头-每个cookie一个?rfc6265声明:
此外,这里还指出:
当发送带有多个Cookie的HTTP响应时,CFHTTPMessage将Cookie合并到一个单独的“Set”HTTP报头下的逗号分隔列表中。(这被称为“套装曲奇折叠”。) Google Chrome、Firefox和Internet不支持Set-cookie-折叠。每个浏览器都将完全忽略第一个逗号之后的每个cookie,使得CFHTTPMessage在任何浏览器(支持cookie-折叠)中使用多个cookie处理HTTP响应都是完全无用的。
在firebug上的响应是这样的:

两个饼干是由未知的字符连接在一起的。正如我注意到的--其他服务器,比如Apache,通过新的行字符在一个Set-Cookie头中拆分多个cookie。
我注意到这种情况只发生在HTTPS连接上.
此外,我还在Github 这里上打开了一个问题。
尝试在Tomcat 9 web服务器上运行相同的web应用程序- Set-Cookie头cookies由新的行字符分隔,它的工作方式与预期的一样.

同样的响应,但在Glassfish5上,以及同样的-cookie由未知字符加入,并且不被Firefox接受(仅仅是第一个):

在NetBeans IDE8.2HTTPServerMonitor中,我可以看到发送了2个cookies -它看起来很好:

再次在一组Cookie头中的FireFox -2 Cookie上:

只收到一份-值不正确.:

火狐开发者版也是如此:

完全困惑..。
Glassfish 5使用GrizzlyFramework2.4.0--我认为grizzly-http-servlet-2.4.0-sources.jar中的源代码是可用的--但是找不到一个代码块,其中cookies在一行中被连接在一起。
现在我可以确认,它只与HTTP2.0协议有关,在火狐上通过启用/禁用network.http.spdy.enabled.http2在about:config上进行了测试。在HTTP/1.1上,通过HTTPS设置cookie,如预期的那样。
发布于 2017-08-22 14:58:36
你不再需要那个定制的核灰所有. that。这个问题已经发布,作为最近的玻璃鱼5.0夜店和最近的推广建设的一部分。
当我使用Grizzly问题跟踪实际修复并使用GlassFish问题来集成Grizzly时,有两个不同的问题。
发布于 2017-08-17 00:25:07
这个问题现在已经由专业的玻璃鱼团队解决了--我们应该在nucleus-grizzly-all.jar上用新的可用的这里文件来修改文件GitHub。再一次感谢玻璃鱼开发团队!
https://stackoverflow.com/questions/45643689
复制相似问题