https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

昨天有人向我问一个问题,页面在谷歌浏览器上可以正常进行修改操作,但在火狐浏览器上会产生报错,浏览器报错信息是这样的 

https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

已阻止载入混合活动内容。

是https页面发送了http请求,然后被浏览器认为危险之后拒绝了,我本身对https和http了解不多,以为是浏览器段出现错误,也是一脸懵,搞不清楚,后来他吧页面发送给我,调试发现第二个报错信息的请求方式是302,并且在请求的时候被重定向过,第一次没有仔细检查,先入为主的以后是浏览器段访问不到https资源,然后自动 重定向到了http://访问,搜索许久,无果,然后无意中发现请求已经失效,内容已经被修改了,转回重新查看请求 发现 302 的location和请求地址并不是同一个,知道自己想错了,应该是服务器后台原因,遂向其询问后台代码 , 发现在后台最后对请求进行了重定向,然后返回浏览器的时候因为iframe父页面是https,而重定向的请求是http,才发生的安全警告。

https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

问题已经定位到了,解决又开始头疼,因为对请求最后为什么会发出http重定向表示不解,打算使用response.sendRedirect 进行转发。

在搜索中想尝试使用

https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上


https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

进行解决,但是无奈对方服务器使用的并非nginx ,而是阿里云服务器,对阿里云账号也没有权限进行操作,所有假如有试验过的可以留一下言,感激不尽。



最后问题的解决并非是由我解决的,而是由朋友公司先前的程序员提供的 

https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

https服务,但是Spring MVC总是重定向到http,怎么才能使其重定向到https上

我猜测原因在于springmvc底层使用的是 httpservletresponse.sendredirect,并没有使用response.isSecure进行保护,所以导致最后发送的请求重定向的协议是http:// 

到谷歌搜索后  有其他程序猿也提过相同的问题,中间有提供了具体的解决方法和思路,但是本人英文较差并且http协议了解的实在太少,无法进行准确的翻译,链接如下

http://*.com/questions/3401113/spring-mvc-redirect-prefix-always-redirects-to-http-how-do-i-make-it-stay

有出现问题的朋友可以自行去查阅。



问题总结:

1)对于协议的了解太少,对于http 1.0 2.0 https只是了解皮毛,甚至连皮毛都没有了解到。

2)对于请求的查看太粗略,如果当时发现重定向的来源和目标不同的话,后面就可以不用浪费的1个多小时了。

3)先入为主的概念太深,总是由猜测来进行决定,本文中出现的猜测也很多,也有很多没有验证。