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

时间:2014-10-01 18:30:28

标签: java google-app-engine servlets

在Google App Engine中,当isSecure()返回false时,ServletRequest上的getScheme()可能会返回“https”吗?“

这是this的后续问题。

1 个答案:

答案 0 :(得分:2)

我认为这个问题遗漏了你在另一个问题上添加的一些上下文,因为你的担心似乎是证书错误,我认为适当的答案是:

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

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

  

[如果getScheme()返回“https”] 是否保证已建立HTTPS连接并且没有证书错误?

我认为您的问题存在一个有缺陷的假设,即证书错误意味着未建立HTTPS连接。在证书错误(不受信任的发行者,过期的证书等)的情况下,有两种可能性:

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