【问题标题】:Does Ring request {:scheme :https} guarantee a HTTPS connection?Ring request {:scheme :https} 是否保证 HTTPS 连接?
【发布时间】:2014-10-01 11:55:00
【问题描述】:

如果环请求映射键:scheme的值为:https,是否保证HTTPS连接已经建立并且没有证书错误?

【问题讨论】:

    标签: ssl https clojure ring


    【解决方案1】:

    这可能是一个与您使用的任何 servlet 容器相关的问题,而不是 ring。

    ring-servlet 通过getting a value from the HttpServletRequest 填充:scheme 键:

    :scheme (keyword (.getScheme request))

    servlet 规范中关于getScheme 的内容只有这个:

    返回用于发出此请求的方案名称,例如 http, https 或 ftp。不同的方案对构建 URL 有不同的规则, 如 RFC 1738 中所述。

    有趣的是,ring-servlet 不会在 servlet 请求上调用 isSecure 方法。所以我认为你的问题应该是:

    “当使用 时,ServletRequest 上的 getScheme() 是否有可能在 isSecure() 返回 false 时返回“https”?”

    【讨论】:

    • 如果您在使用ring-ssl 中间件的反向代理后面运行,它也可以基于X-forwarded-proto 标头进行设置,在这种情况下,所有赌注都已关闭。
    • 根据您的建议,我已经询问了follow up question
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2012-09-07
    • 2015-03-22
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    相关资源
    最近更新 更多