从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下的某些网站页面并没有任何意义。