java后台系统登陆重定向访问https跳转到http的解决方法

1、问题描述

       开发了一个web后台系统,nginx配置了证书,开启443端口,支持https请求;但是后台系统中使用了相对路径的重定向,导致登陆重定向报错;

        备注:nginx配置了证书,支持443,但是不支持80端口;后端只处理http请求;

2、配置项

nginx.conf

    server {
        # 监听8080端口
        listen 8080;#不要占用 即将转发的80端口 。或者直接干掉这个server
        location / {
        }
    }

https 转 http

server {
        listen       443 ssl;
        # 域名配置 https://xx.cn
        server_name  xxx.com;
        ssl on;
        ssl_session_timeout 10m;        
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置        
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置 
        # 证书位置
        ssl_certificate  ssl/server.crt;#配我们生成的 nginx-1.14.0/https/xx.cn/server.pem;
        ssl_certificate_key ssl/server.key;#配我们生成的 ngin1.14.0/https/xx.cn/privkey.pem;
        location / {
            proxy_pass http://xxx.com;#这里的xxx.com是我们需要转发的,配合修改hosts文件 
                            //127.0.0.1  xxc.com
        }
    }

后端代码的写法:

 /**
     * 拦截处理
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {
        // do something
        //这里使用了相对路径
        response.sendRedirect("/index/index");
        return true;
    }

3、解决办法

1、直接修改后端代码,重定向改为绝对路径;

2、nignx添加重定向设置,把后端重定向的回文改成http改成https交给浏览器重新请求

proxy_redirect http:// $scheme://;

参考:

详解NGINX访问https跳转到http的解决方法_运维笔录 美玲的技术博客_51CTO博客

用 Nginx 实现 https 转 http_栗少的博客-CSDN博客_nginx配置https转http

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的后台登录逻辑实现Controller示例代码: ```java @Controller public class LoginController { @Autowired private UserService userService; // 通过@Autowired注解注入UserService // 处理GET请求,跳转到登录页面 @GetMapping("/login") public String login() { return "login"; } // 处理POST请求,处理用户登录请求 @PostMapping("/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { User user = userService.login(username, password); // 调用UserService的login方法进行用户登录验证 if (user != null) { session.setAttribute("user", user); // 将用户信息存入session中 return "redirect:/home"; // 登录成功,重定向到首页 } else { return "login"; // 登录失败,返回登录页面 } } // 处理GET请求,注销当前登录用户 @GetMapping("/logout") public String logout(HttpSession session) { session.invalidate(); // 销毁session return "redirect:/login"; // 重定向到登录页面 } } ``` 在上面的示例代码中,我们使用了Spring的注解方式进行开发。在类上使用`@Controller`注解表示这是一个控制器类,在方法上使用`@GetMapping`和`@PostMapping`注解分别表示处理GET和POST请求。使用`@Autowired`注解注入了一个UserService的实例,用于处理用户登录请求。在登录方法中,调用UserService的login方法进行用户登录验证,如果验证通过,将用户信息存入session中并重定向到首页;否则返回登录页面。在注销方法中,销毁session并重定向到登录页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值