本文主要是介绍Https被sendRedirect到Http,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
遇到的问题
最近,在项目中遇到了一个比较棘手的问题:
- 项目服务器通过nignx配置CA证书,将https请求转发到http,从而支持https
- 项目前后端分离,后台向前端提供restapi接口
- 后台也配置了https转发,支持https请求
- 当前端调用后台某个接口时,后台内部使用
sendRedirect
做服务器内部跳转,服务器内部跳转之后,返回给前端的是一个http请求,导致前端不支持https请求http而报header错误的信息(问题所在)
分析
sendRedict
的实质是让请求在服务器中做了两次跳转
请求转发forward
与请求重定向sendRedirect
的区别:
-
请求重定向:客户端行为,
response
。
sendRedirect()
从本质上将等同于两次请求,前一次请求的请求对象不会保存,地址栏的URL地址会改变。 -
请求转发:服务器行为,
request
。
getRequestDispatcher().forward(req, resp)
是一次请求,转发后请求对象会保存,地址栏的URL地址不会改变
解决方法
1.使用forward
这篇关于Https被sendRedirect到Http的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!