JSESSIONID cookie的SECURE标志未出现

时间:2019-03-14 21:48:51

标签: amazon-web-services spring-security

应用程序部署在AWS上,并在端口80上提供服务,ELB将该端口80转发至443。Spring安全性用于会话,该会话创建带有安全标志集的cookie。当我点击应用程序主机名时,我可以看到设置了安全标志,如下所示。

curl -I target_hostname

Set-Cookie:JSESSIONID = XXXXXXXX;路径= /;安全; HttpOnly

但是当我直接使用EC2 IP(使用curl)时,我可以看到未设置安全标志。

curl -I target_ec2_ip

Set-Cookie:JSESSIONID = XXXXXXXX;路径= /; HttpOnly

为什么会这样?有人可以解释吗?

1 个答案:

答案 0 :(得分:0)

我将假设您在ELB处终止SSL,并且直接通过HTTP(端口80)与EC2实例联系。在这种情况下,适用以下条件:

RFC 6265

  

如果cookie的仅安全标志为true,则request-uri的方案必须表示“安全”协议(由用户代理定义)。

     

注意:本文档未定义“安全”协议的概念。通常,如果协议使用传输层安全性(例如SSL或TLS),则用户代理认为该协议是安全的。

MDN doc更明确:

  

不安全的网站(http :)不再可以使用“安全”指令(Chrome 52+和Firefox 52+中的新增功能)设置Cookie。