Java Tomcat随机返回401作为二进制文件的POST请求
我在前端运行backbone.js应用程序,在后端运行Tomcat9上的SpringBoot(2.13)应用程序。我们使用的是OpenJDKJava11。(科雷托) 我所有的其他请求(GET和POST)都有效。只有两个上传二进制文件的POST请求有时返回401。我们在后端日志中没有看到任何失败的尝试,只有Tomcat访问日志显示401。请求立即失败。检查Chrome中的请求显示它们看起来是相同的——相同数量的头和相同的值 成功的请求如下所示 [2019年12月3日:13:49:49+0100]172.30.-**用户CN=****,O=****,C=***“POST/rest/taxUpload HTTP/1.1”20061“https://************.eu/”“Mozilla/5.0(Windows NT 6.3;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/78.0.3904.108 Safari/537.36” 未成功的请求如下所示-访问日志中始终有两行 [2019年12月3日:13:50:13+0100]172.30.-**用户-“POST/rest/taxUpload HTTP/1.1”401 1099“https://************.eu/”“Mozilla/5.0(Windows NT 6.3;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/78.0.3904.108 Safari/537.36” [2019年12月3日:17:13:40+0100]172.30.*.*.--“空-空HTTP/1.1”400 2297“-” 对同一文件、同一浏览器、同一用户发出了请求。 我们使用Tomcat上的DataSource数据库域进行身份验证,我们尝试了TLS1.1、TLS1.2, Tomcat 8.5,不同的浏览器,Tomcat中SSL连接器上的所有缓存和超时设置 正在发送的标题 POST/rest/taxUpload HTTP/1.1 主机:******.net 连接:保持活力 内容长度:160093 接受:/ 来源:https://*****.net X-CSRF-TOKEN:344f5e99-b5e5-49c1-8711-27de638dd739 X-request-With:XMLHttpRequest 用户代理:Mozilla/5.0(Windows NT 6.3;Win64;x64)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/78.0.3904.108 Safari/537.36 内容类型:多部分/表单数据;边界=---- WebKitFormBoundaryo5NZhRls0pjEqx8Z Sec获取站点:相同来源 秒取数模式:cors 推荐人:https://******.net/ 接受编码:gzip,deflate,br 接受语言:en-US,en;q=0.9 Cookie:_ga=GA1.2.1549123445.156871033;CSRF-TOKEN=344f5e99-b5e5-49c1-8711-27de638dd739 Tomcat server.xmlJava Tomcat随机返回401作为二进制文件的POST请求,java,http,ssl,tomcat,Java,Http,Ssl,Tomcat,我在前端运行backbone.js应用程序,在后端运行Tomcat9上的SpringBoot(2.13)应用程序。我们使用的是OpenJDKJava11。(科雷托) 我所有的其他请求(GET和POST)都有效。只有两个上传二进制文件的POST请求有时返回401。我们在后端日志中没有看到任何失败的尝试,只有Tomcat访问日志显示401。请求立即失败。检查Chrome中的请求显示它们看起来是相同的——相同数量的头和相同的值 成功的请求如下所示 [2019年12月3日:13:49:49+0100]1
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="250"
scheme="https"
xpoweredBy="false"
server="****"
disableUploadTimeout="true"
maxSavePostSize="4096"
clientAuth="false"
keyAlias="default"
keyPass="***"
keystoreFile="***/default.jks"
keystorePass="****"
keystoreType="JKS"
sslProtocol="TLS"
ciphers="TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,SSL_RSA_WITH_3DES_EDE_CBC_SHA,TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA"
sslEnabledProtocols="TLSv1.2+TLSv1.1+TLSv1"
sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
truststoreFile="***.jks"
truststorePass="****"
truststoreType="JKS"
secure="true"
relaxedQueryChars="[,]"
acceptCount="250"
acceptorThreadCount="2"
compression="on"/>
<Realm className="org.apache.catalina.realm.DataSourceRealm"
dataSourceName="jdbc/authority"
userTable="users" userNameCol="user_name" userCredCol="user_pass"
userRoleTable="user_roles" roleNameCol="role_name" localDataSource="true"/>
您可以添加正在传递的标题吗?另外,您能否详细介绍底层基础设施?spring应用程序部署在哪里?它前面有一个API网关吗?甚至可能添加“错误”代码?通常,当你有“随机”行为时,它与时间有关(例如:你到达超时,连接被切断)。我添加了标题,我们甚至尝试在与后端相同的服务器上运行浏览器,问题仍然发生。至于超时,正如我所说,在发送请求后会立即发生失败。