当前位置: 首页 > 面试题库 >

HTTP请求压缩

东门理
2023-03-14
问题内容

一般用例

想象一个客户端正在上传大量JSON。Content-Type应该保留,application/json因为它描述了实际数据。Accept-Encoding和Transfer-Encoding似乎是在告诉服务器应如何格式化响应。看来,响应为此目的明确使用了Content-Encoding头,但这不是有效的请求头。

我有什么想念的吗?有没有人找到一个优雅的解决方案?

具体用例

我的用例是,我有一个移动应用程序,该应用程序生成大量的JSON(在某些情况下,但是程度较小的情况下,还会生成一些二进制数据),并且压缩请求可以节省大量的带宽。我使用Tomcat作为我的Servlet容器。我将Spring用于其MVC批注,主要是为了将JEE的某些内容抽象为一个更加简洁,基于批注的接口。我还使用Jackson进行自动(反序列化)。

我也使用nginx,但是我不确定那是否是我想要进行减压的地方。Nginx节点仅平衡请求,然后通过数据中心分发这些请求。保持压缩,直到它真正到达要处理的节点,这同样好。

提前致谢,


问题答案:

似乎[Content-Encoding]不是有效的请求标头。

这实际上不是很正确。根据RFC 2616,sec 14.11,Content-Encoding是一个实体标头,这意味着它可以应用于http响应和请求的实体。通过多部分MIME消息的功能,甚至可以压缩请求(或响应)的选定部分。

但是,Web服务器对压缩的请求正文的支持非常有限。Apache通过mod_deflate模块在一定程度上支持它。我还不清楚nginx是否可以处理压缩请求。



 类似资料:
  • 由于我不是专家,我有一个关于HTTP/2的一般问题。 因此,众所周知,HTTP2压缩报头以减小消息大小。这只适用于响应还是也适用于请求?如果做一个小实验,运行两个小型HTTP服务器,一个使用版本1.1,另一个使用版本2,让两个服务器发送完全相同的内容,然后在Firefox中请求两个页面,我可以看到HTTP/2版本的响应头大小大大减小。但是,请求头的大小几乎相同。在我看来,这是有道理的,因为浏览器事

  • 问题内容: 如何gzip HTTP 请求 ,由创建 我正在使用Spring (Java SE,而不是Web浏览器中的Android或Javascript)。 我正在提出一些非常大的请求,并且我希望压缩 请求正文 。 问题答案: 我提出了两种解决方案,一种更简单,无需流传输,另一种支持流传输。 如果您 不需要流式传输 ,请使用custom ,一个Spring功能。 可能在哪里: 我复制了 配置拦截器

  • 主要内容:HTTP请求完整格式HTTP请求完整格式 HTTP请求由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求示例: ①是请求方法,HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE,最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。 ②为请求对应的URL地址,它和报文头的Hos

  • 获取请求 要通过依赖注入的方式来获取当前 HTTP 请求的实例,你应该在控制器方法中引入 Illuminate\Http\Request 类。传入的请求实例将通过 服务容器 自动注入: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; class UserController extends Controll

  • Blade 支持注解的方式或者使用 Request 对象获取请求信息。 表单参数 先看看 Request 提供的操作表单参数的API Optional<String> query(String name) Optional<Integer> queryInt(String name) Optional<Long> queryLong(String name) Optional<Double> qu

  • 该插件适用于一般的请求场景,只支持post、get、put和delete请求,目前不适用于其他的请求形式,比如上传,下载等。插件定位为 小而美,而不是大而全,目标是切合实际,开箱即用。 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 由于某些小程序平台的限制: delete请求,不支持支付宝和头条小程序(HX2.6.15) pu