【问题标题】:How to avoid Wicket redirecting page from HTTPS to HTTP如何避免 Wicket 将页面从 HTTPS 重定向到 HTTP
【发布时间】:2020-12-14 08:27:33
【问题描述】:

我使用 wicket 8.10,它安装在 tomcat 上并由 nginx 代理。在 nginx 配置中配置的 SSL 证书。 Nginx 还将所有 HTTP 请求转发到 HTTPS。

问题如下:

当我提交任何表单时,检票口返回响应标头,其中 Location 标记包含带有 HTTP 协议的 url。

为什么重要:

Location 在由 HTTPS 打开的页面上包含 HTTP 协议时,最后一次 chrome 更新使浏览器显示警报。在此之前,nginx 会悄悄地重定向请求,但现在用户从浏览器看到警报页面(类似于证书无效或不存在时)。

【问题讨论】:

    标签: nginx wicket nginx-reverse-proxy


    【解决方案1】:

    这里的问题是您的 Wicket 应用程序不知道它在代理后面。

    有两种解决方案:

    1. 使用XForwardedRequestWrapperFactory

    它将用读取X-Forwarded-*** 请求标头的内容包装Tomcat 的HttpServletRequest。 只要确保 Nginx 导出 X-Forwarded-Proto 请求头

    1. 使用HttpsMapper

    只需覆盖protected Scheme getDesiredSchemeFor(Class<? extends IRequestablePage> pageClass) 以在生产模式下返回Scheme.HTTPS 并在开发模式下返回Scheme.HTTP(我假设您在开发时不使用 Nginx 代理)

    【讨论】:

      【解决方案2】:

      我找到的最简单的解决方案是使用 nginx 指令:

      proxy_redirect http://example.com https://example.com;
      

      它将位置标头从http://example.com/any/path 更改为https://example.com/any/path

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-14
        • 2013-10-18
        • 2018-03-19
        • 1970-01-01
        • 2014-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多