【问题标题】:https to http rewrite, https detection, java spring mvchttps到http重写,https检测,java spring mvc
【发布时间】:2012-11-08 15:53:24
【问题描述】:

我正在尝试通过修改以下代码来检测 https 请求:

public static boolean isOnHttps(HttpServletRequest request) {
    String protoHeader = request.getHeader(Constants.Header.X_FORWARDED_PROTO);

    if (null == protoHeader || ! protoHeader.equals("https")) {
        return false;
    }

    return true;
}

上面的代码未能检测到一些 https 请求,对此我有两个问题:

  1. getHeader的参数代表什么?

  2. 我应该怎么做才能检测到通过 https 向我们的服务器发出的每个请求?

如果您能指出我的任何方向,那将非常有帮助。提前感谢您的时间。

【问题讨论】:

    标签: java http https


    【解决方案1】:

    问:getHeader的参数代表什么?

    X_FORWARD_PROTO 的目的是确定 HTTP 请求的发起协议(因为中间的负载均衡器/代理可以终止 HTTPS 连接)。如果您发布您导入的常量,这将很有用。对于哪些请求,它无法检测到原始协议?但是,下面提到的方法应该会有所帮助..

    问:我应该怎么做才能检测到通过 https 向我们的服务器发出的每个请求?

    有一个方法 SerlvetRequest#isSecure() 在 https 请求的情况下返回 true。来自Javadoc:

    返回一个布尔值,指示此请求是否使用 安全通道,例如 HTTPS。

    如需进一步阅读,请考虑great answer。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-20
      • 2011-03-11
      • 2018-08-09
      • 2014-12-26
      • 2020-04-16
      • 2018-05-02
      • 1970-01-01
      • 2014-03-04
      相关资源
      最近更新 更多