当前位置: 首页 > 知识库问答 >
问题:

带有大json响应的HTTPS请求无法下载[Tomcat]

商风华
2023-03-14

我在Tomcat 7.0.75上部署了一个spring boot web应用程序,我们最近用https保护了它,它有以下服务器。xml:

<Connector port="8443"
  protocol="HTTP/1.1"
  SSLEnabled="true"
  maxThreads="50"
  server="web"
  allowTrace="false"
  keystoreFile="/app/certs/keystore.jks"
  keystorePass="wouldntYouLikeToKnow"
  scheme="https"
  secure="true"
  clientAuth="false"
  sslProtocol="TLS"
  sslEnabledProtocols="TLSv1.1,TLSv1.2"
  ciphers="TLS_...SHA"
  maxSwallowSize="-1"
  connectionTimeout="20000"
  maxKeepAliveRequests="100"
  socket.soKeepAlive="true"/>`

当我们转到https时,具有大型(多MB)json响应体的请求在报告200 OK响应代码后,开始在Chrome中生成奇怪的警告消息。IE也未能完全下载响应。

它只是一直显示警告,永远不会完成下载。小请求很好。从客户端的角度来看,请求尚未完成,因为https调用的成功函数和错误函数均未执行。如图所示,到第一个字节的时间(TTFB)相对较快,但在下载过程中花费了大量时间,并且从未离开该阶段。Tomcat显然保持了http连接的打开状态,客户端仍在等待数据,因为当我关闭浏览器时,Tomcat报告了一个套接字关闭错误。有人知道发生了什么事情吗?为什么大响应下载无法通过https完成,但可以通过http正常工作?

编辑1这里是从Linux调用的curl命令和响应。

curl -X GET   https://host.com/context   -H 'accept: application/json, 
text/plain, */*'   -H 'cache-control: no-cache'   -H 'token: 12acdee7-ef76-
4147-98d2-d90e4414d4e6'   -H 'user-name: vn62253'   -H 'user-security-id: 1' 
-k -I

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: POST, PUT, GET, HEAD, OPTIONS, DELETE
Access-Control-Expose-Headers: Content-disposition, Content-Type
Access-Control-Allow-Headers: Origin, Accept, X-Requested-With, Content-
Type, Access-Control-Request-Method, Access-Control-Request-Headers, User-
Security-Id, Token, User-Name, Client-TZ-Offset
X-Application-Context: Compliance_WS:8765
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Vary: Accept-Encoding
Date: Tue, 29 Aug 2017 14:33:47 GMT
Server: web

共有1个答案

鲁阳焱
2023-03-14

您可以增加tomcat的默认超时时间。如果您可以使用ngnix等负载均衡器,您可能会遇到此问题,因为它的默认超时间隔为1分钟。

 类似资料:
  • 我已经用SSL配置了Tomcat V7.0服务器,如下面的链接所述。https://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html#配置 我没有收到通过REST客户端发送的请求的任何响应。URL:https://localhost:8443/context/getdata https://localhost:8443/

  • 网络爬虫工作过程可以理解为模拟浏览器操作的过程,浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示服务器返回的网络资源。 一、浏览器处理网页的过程 我们先来看一下浏览网页的基本过程,比如我们在浏览器地址栏输入:http://www.baidu.com 回车后会浏览器会显示百度的首页。 这段网络通信过程中到底发生了什么?简单来说这段过程发生了以下四个步骤: 当我们在浏览器输入URL http:/

  • 问题内容: 我正在发送一个带有2个post值的ajax请求,第一个是“ action”,它定义了我的php脚本必须解析的动作,另一个是“ id”,它是要为其解析脚本的用户的ID。 服务器在array()中返回6个值,然后使用PHP函数将其编码为JSON: 我的一些响应为HTML,但是当我将其编码为JSON时,它会转义,因此 如何禁用它? 当我不知道如何在获得服务器响应时在jQuery中显示此消息时

  • 我正在开发一个与我编写的RESTful网络服务通信的Android应用程序。在GET方法中使用Volley非常简单,但是我不能把我的手指放在POST方法上。 如何从我的post请求响应中获取字段这是我的响应 我想只有"访问令牌"内容 这是我的密码 请帮帮我?!

  • 我可以在https://protocality-website/graphQL/gql上访问我们的graphQL,如果运行以下查询,它将返回预期的结果: 现在,我尝试将其应用于jmeter 我在我的线程组中创建了一个HTTP请求,协议:https,服务器名:protectary-website,方法:GET,路径:/graphql/gql 我创建HTTP头管理器,并包含所需的承载令牌和内容类型头

  • javax.net.ssl.SSLHandShakeException:>java.security.cert.certPathValidatorException:未找到证书的信任锚>路径。 这条信息是什么意思?