[英]tomcat https cause request.getParameter return null
测试服务器使用centos 7和tomcat 9
最初,测试服务器 tomcat 使用http
,这个 tomcat 包含 4 个 web 应用程序: a.war
, b.war
, c.war
和d.war
,它工作正常,它的server.xml
看起来像:
<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="60000"
keepAliveTimeout="15000"
maxKeepAliveRequests="-1"
maxThreads="1000"
minSpareThreads="200"
maxSpareThreads="300"
minProcessors="100"
maxProcessors="900"
acceptCount="1000"
enableLookups="false"
executor="tomcatThreadPool"
maxPostSize="-1"
compression="on"
compressionMinSize="1024"
redirectPort="443" />
然后我尝试通过keytool
将https
与自签名 ssl 一起使用:
<Connector
port="443"
protocol="HTTP/1.1"
minSpareThreads="5"
maxSpareThreads="75"
enableLookups="true"
disableUploadTimeout="true"
acceptCount="100"
maxThreads="200"
maxPostSize="-1"
scheme="https"
secure="true"
SSLEnabled="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="/opt/test.keystore"
keystorePass="123456"/>
但是,登录后,我的 webapp 总是显示加载:
nullpointerexception
因为request.getParameter('key')
返回null(其实request.getParameterMap()
和request.getParameterNames()
返回空),但是从浏览器网络来看,这个参数有已经送走了。 对于上面的#1,当登录成功时, a.war
会向b.war
、 c.war
和d.war
发送请求,请求参数包括一个array(has 85 items and each item contains 7 fields)
和key
。
如果我从请求参数中删除array
,只保留请求参数key
,那么在 https 中不会总是显示加载。
检查 tomcat 文档后,我尝试更改 https connector
protocol
。
如果我将protocol
从HTTP/1.1
更改为org.apache.coyote.http11.Http11Nio2Protocol
,那么 https 没有任何问题,我也可以发送请求参数array
。
所以我不明白:
array(has 85 items and each item contains 7 fields)
并使用HTTP/1.1
协议在https
key
有时会导致request.getParameterMap()
, request.getParameterNames()
返回空和request.getParameter('key')
返回空值HTTP/1.1
在https
删除请求参数array
,那么它工作正常。HTTP/1.1
协议的http
没有任何问题org.apache.coyote.http11.Http11Nio2Protocol
可以解决我的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.