大致的错误原因是:HttpServletRequest的getRequestURL方法获取不到https协议请求问题
如果我们的请求是https那我们需要在获取请求url的链接时候进去对http的替换。
方法1 :直接点的方法就是,知道请求是https进行直接的replace字符替换;
public String getUrl()
{
HttpServletRequest request = ServletUtils.getRequest();
String domain=getDomain(request);
String replace=domain.replace("http","https");
return replace;
}
方法2:或者更加智能化,获取请求头的字段进行判断是否为https请求,是则进行替换
public String getUrl()
{
HttpServletRequest request = ServletUtils.getRequest();
String domain=getDomain(request);
String scheme = request.getHeader("X-Forwarded-Scheme");
String replace=domain.replace("http",scheme);
return replace;
}
另外还需要对Nginx配置文件下进行添加此语句
proxy_set_header X-Forwarded-Scheme $scheme;
以上就是解决步骤
|