【发布时间】:2012-01-02 07:19:18
【问题描述】:
我用 Java 编写了一个 servlet,我想知道对该 servlet 的请求是使用 HTTP 还是 HTTPS 执行的。
我以为我可以使用 request.getProtocol(),但它在两种方法上都返回 HTTP/1.1。
有什么想法吗?
【问题讨论】:
标签: java servlets ssl https http-protocols
我用 Java 编写了一个 servlet,我想知道对该 servlet 的请求是使用 HTTP 还是 HTTPS 执行的。
我以为我可以使用 request.getProtocol(),但它在两种方法上都返回 HTTP/1.1。
有什么想法吗?
【问题讨论】:
标签: java servlets ssl https http-protocols
HttpSerlvetRequest.isSecure() 就是答案。 ServletContainer 负责在以下情况下返回 true:
当在 https 上收到请求时,容器还应使此请求属性可用:
【讨论】:
您不能可靠地依赖端口号。
但是您可以依赖该方案:
使用:request.getScheme() 查看是否为https。
如果是,那么它是安全连接。
我相信无论 Tomcat 版本如何,这都应该可以工作
【讨论】:
isSecure。请务必检查继承的方法。
【讨论】:
https 和 http 在不同的端口上运行。所以你可以从请求中获取端口,知道请求来自哪个端口,这样你就可以知道协议。 int port=request.getServerPort();
【讨论】: