从HTTP登录到HTTPS
默认情况下,我的网站是在HTTP上。 我有一个启用HTTPS的证书,但只有某些区域强制建立安全连接。
登录是通过Ajax处理的,我想开始使用SSL,即使请求来自HTTP。
我试图强制请求的地址有HTTPS,它完全回复。 但是,在ajax回调中,似乎会话从未设置过,尽管回复没问题。
如果请求来自HTTPS,一切都很顺利。
为什么会这样?
我可以理解为什么浏览器拒绝HTTPS到HTTP请求,但反向情况(HTTP到HTTPS)有一个特殊的结果,至少可以说,因为浏览器不会抛出任何类型的错误。 在Ajax请求完成后,该会话似乎从未启动过,尽管来自回复的所有数据都告诉我它。
您的登录系统可能基于会话信息和/或cookie。
出于安全原因,无法在HTTP上读取通过HTTPS设置并标记为安全 4.2.2 Set-Cookie Syntax
(请参阅第4.2.2 Set-Cookie Syntax
节“ 4.2.2 Set-Cookie Syntax
)。
因此,您系统中可能发生的情况是,您的用户通过HTTPS进行身份validation,只要他们继续使用HTTPS,他们就会登录。 在HTTP上,会话将不存在。
您应该不将该特定cookie标记为安全或将整个站点切换为HTTPS(推荐选项)。 截至2016年,如果您已经让您的网站听取了HTTPS,那么仅使用HTTPS下的某些网站页面并没有任何意义。