Mix Content:The page at 'https://www.abc.com...' was loaded over HTTPS, but requested an insecure form action 'http://www.abc.com...'.This request has been blocked;the content must be served over HTTPS.
如上提示,解决方法如下:
http://www.tuicool.com/articles/ARVVFjI
http://feitianbenyue.iteye.com/blog/2056357
http://www.w2bc.com/article/158816 (这个写的很细,但是对于这个问题重要的也就是那两个分别对反向代理服务器和tomcat的配置)
发生环境:
使用ssl数字证书,Apache(我的环境是2.4.23)或Nginx(我的环境是1.11.8)实现反向代理,后端使用tomcat(我的环境是7.0.73),nginx那个环境前面有硬件waf负责https卸载,证书配置在waf中,nginx纯粹当反向代理用(里面没有证书以及相关配置)
问题初步分析:
此时反向代理负责证书卸载,反向代理和tomat之间使用的是http协议,反向代理负责把tomcat数据取出来反馈给用户,这样tomcat接收到的是反向代理的http请求,redirect判断的实际上是正确的。
注意调整配置:
反向代理服务器和tomcat都要调整,只调整tomcat是不好用的。
nginx我调整的是在location / {}中间追加了:proxy_set_header X-Forwarded-Proto https; 注意,指明https写$scheme没好用;
疑问:
很奇怪的是在nginx的环境上这个问题之前没发生,突然有那么一天就开始有问题了。Apache的上一开始就有。网上资料很少,一度折腾的我改代码。https这块真是充满了大坑!