java - 在 Google App Engine 中,当 isSecure() 返回 false 时,ServletRequest 上的 getScheme() 是否可以返回 "https"?”

标签 java google-app-engine servlets

在 Google App Engine 中,当 isSecure() 返回 false 时,ServletRequest 上的 getScheme() 是否可以返回“https”?”

这是 this 的后续问题.

最佳答案

我认为这个问题缺少您在另一个问题上添加的一些上下文,因为您担心的似乎是证书错误,我认为合适的答案是:

getScheme() 即使在证书错误的情况下也会返回 https,但前提是(当然)客户端选择接受有错误(不受信任、过期等)的服务器证书在 SSL 握手期间。例如,客户端可能使用了curl -k 标志。

在您原来的问题中,您提到:

[if getScheme() returns "https"] is it guaranteed that a HTTPS connection has been established and there were no certificate errors?

我认为您的问题中有一个有缺陷的假设,即证书错误意味着未建立 HTTPS 连接。如果出现证书错误(不受信任的颁发者、过期的证书等),有两种可能性:

  1. 客户端终止 SSL 握手(不会有任何请求到达并由您的应用程序处理)。
  2. 客户端已明确选择信任此证书,或者选择忽略过期的证书和其他错误 (curl -k)。在这种情况下,将建立 https 连接并且请求将继续。您的应用当然会看到 getScheme() 返回的“https”,因为 https 连接已建立。但从客户端的角度来看,这可能不是一个值得信赖的连接。

关于java - 在 Google App Engine 中,当 isSecure() 返回 false 时,ServletRequest 上的 getScheme() 是否可以返回 "https"?”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26148119/

相关文章:

java - 属性文件位置java

java - Java EE servlet 的(内存)占用空间是多少?

python - GAE users.get_current_user() 返回 None

java - 不能显示多个错误消息。 Java 小服务程序

multithreading - 如何在基于 servlet 的 Web 应用程序中运行后台任务?

java - Struts 2框架演示

java - RSA加密post请求JAVA

java - 在多线程程序中缓冲数据库插入

java - 是否可以再调试 GWT?

google-app-engine - 如何将 Google App Engine PaaS 连接到 DaaS