问题标签 [content-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 如何使用 zlib 为 HTTP 压缩 HTTP 响应?
我正在编写一个小型服务器 http,它总是发送他生成的 html 页面(它丢弃了客户端请求)。这是一个更大程序的一部分
我想使用内容编码来最小化本地带宽的使用...
我从尝试这个例子开始:
这不起作用,因为当我启动时telnet 192.168.0.20 80
没有打印任何内容。
根据GDB中的逐步执行,调用write()时缓冲区具有正确的值
主要思想是我不能直接压缩文件,因为我需要对实际程序中的结果进行内存操作。
json - 在包含 JSON 的文件中定义文本编码
我的应用程序将配置数据(包括 UI 的字符串)存储在一个包含 JSON 的文本文件中。例如,config.json 可能包含以下内容:
该文件将发送给我们的翻译供应商,他们会以多种支持的语言对其进行复制。他们可能正在构建自己的应用程序,或者他们可能正在文本编辑器中对其进行编辑。我不知道。
由于我们将在某些语言中使用各种非 ASCII 字符,因此我想确保每个人都清楚我们正在使用的字符编码。
因此,如果这是一个 XML 文件,我会在文件顶部添加以下声明:
任何合理的文本编辑器或 XML 解析器都会看到这一点并知道文件是用 UTF-8 编码的。
是否有任何类似的标准可以放在 JSON 文件的顶部,并且可以合理地保证消费者会很好地使用它?
php - 当 fastcgi 后端偶尔使用内容编码提供 gzip 时,如何禁用 Nginx 双 gzip 编码?
如果后端已经设置了“content-encoding”标头,是否有任何巧妙的方法来欺骗 nginx 停止 gzip?
Nginx 配置为 gzip 来自 php fastcgi 后端的输出。
这在 99% 的情况下都非常有效。
除了在极少数情况下,php 会发送一个原始的 gzip 文件并附加一个Content-Encoding: gzip
标题。
不幸的是,Nginx 会继续尝试第二次 gzip 该内容。
生成一个双content-encoding: gzip
content-encoding: gzip
标头和双编码的 gzip 压缩体。
大多数现代浏览器都可以处理这个问题,Firefox、Chrome。
IE8 不能,Safari 移动版不能,旧的 Safari 5 for Windows 不能——相反,它们会显示乱码的 gzip 内容,因为它合并了内容编码标头,并且只对 gzip 的正文进行解码。
感谢您的任何想法。
java - 无法使用 DefaultHttpClient、HttpPost JSON 在 Android 设备上获取 gziped InputSTream
我在 http 和 https 站点(相同的 IIS 服务器)上公开了 JSON 服务。使用此代码,当调用 http url 时,我得到了 gziped 响应,但调用 https 响应不是 gziped。HTTPS 正在使用同一站点的另一个应用程序上重新调整压缩后的内容和正确的标头(在这种情况下,想要的标头是 Content-Encoding)。
有谁知道这里有什么问题,或者我应该使用其他方法吗?contentEncoding 标头为空
javascript - 如何忽略内容编码
我有一个需要从中下载文件的设备。在某些情况下,该文件可能包含不正确的content-encoding
. 特别是,当它没有被 gzip 压缩或以任何方式压缩时,它可能具有“gzip”的内容编码。
因此,当文件被 gzip 压缩时,使用基本的 ajax GET 获取内容很简单:
但是,正如您所料,当内容编码错误时,这会失败。
需要明确的是,我不是在寻找解决方案来绕过ERR_CONTENT_DECODING_FAILED
浏览器中的给定网址。例如,我希望能够将 csv 加载到 javascript 中的字符串中以进行进一步解析。
我可以获取文件,并强制它跳过尝试解码,或覆盖响应的内容编码,或类似的吗?
ruby-on-rails - 服务器返回多个内容编码值会破坏 Chrome 中的 SVG 文件
使用使用资产同步将资产上传到 Amazon S3 的 Rails 应用程序设置,然后在 Amazon 之上同时使用CloudFront和CloudFlare作为 CDN,我在访问 .svg 文件时似乎在 Chrome 和 Safari 中遇到错误:
此页面包含以下错误:
第 1 行第 1 列的错误:编码错误 下面是第一个错误之前的页面呈现。
检查标头时,它看起来像这样:
因为 Content-Encoding 被指定了两次,我认为 Chrome 无法正确解释文件。
响应看起来像垃圾:
在 Firefox 中,文件加载并且源代码看起来没问题:
直接从 Amazon 请求文件只会输出这个空的 content-encoding 标头,并且文件加载正常:
从 CloudFront 请求它时也会发生同样的情况。似乎CloudFlare gzips svg 文件并content-encoding
根据他们的文档添加:
https://support.cloudflare.com/hc/en-us/articles/200168086-Does-CloudFlare-gzip-resources-
如何在 Rails 应用程序中正确使用 SVG 资源?
java - 如何在 JAX-RS 中提供已压缩的内容?
我正在使用 Resteasy 开发一个小型 JAX-RS 应用程序。我希望应用程序为 Javascript 和 CSS 文件等提供一些静态内容,并且我想利用打包在webjars.org的 jar 中的资源的 gzip 压缩版本。因此,我需要处理Accept-Encoding
标题并检查是否.gz
存在(或不存在)。
到目前为止,我所拥有的是:
但它不起作用。提供的内容完全被破坏了。到目前为止,我发现了一个再次压缩流的组件:org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor,因为我手动填充了Content-Encoding
标题(使用ResponseBuilder.encoding
方法)。
这对我来说似乎是一个错误,因为显然没有办法共享已经压缩过的流。但是,这可以使用 JAX-RS 实现吗?这是一个 Resteasy 错误吗?
我可以想出多种方法在 Resteasy 外部实现同样的事情,比如映射 webjars.org servlet(我不在 Servlet API 3.0 环境中,所以我没有META-INF/resources/
自动类路径映射)。尽管如此,我的问题仍然占上风。它适用于其他几个场景。
更新:
作为记录,我已经填写了问题RESTEASY-1170。
google-app-engine - AppEngine Content-Encoding 标头未出现
我正在尝试通过 AppEngine 发送压缩文件,我的功能是
文件已发送,内容类型正确显示在“blah/blah/application/octet-stream”的响应标头中,但 Content-Encoding 永远不会出现在响应标头中,这(我认为)是其他问题的原因我有。
有谁知道为什么它不起作用?
(以防万一 - 我正在使用 chrome 检查器查看响应标头,在这里,源未解析
HTTP/1.1 200 OK 内容类型:blah/blah/application/octet-stream 传输编码:chunked 日期:2015 年 4 月 28 日星期二 06:50:09 GMT 服务器:Google 前端替代协议:80:quic,p= 1)
非常感激
scala - Scalatra,使用 Gzip 编码处理 POST 请求
我有一个带有 POST 方法的 Scalatra API,该方法由发送 gzip 编码消息的外部 API 调用。但是我无法读取 post 请求的正文,当我尝试读取 POST 的正文或尝试对其进行解压缩时,出现异常:
如果我将传入的 POST 请求路由到 fiddler,fiddler 会正确处理消息并声明消息已编码,解码后,我可以在请求的正文中看到正确的消息
这是我尝试过的事情:
同样的异常被抛出:
我也尝试将正文读取为 json,但它返回 JNothing:
这是 POST 标头:
这是堆栈区域的一部分:
asp.net-core - 替换 HttpResponse.ContentEncoding ASP.NET 5
有谁知道 ASP.NET 5 中是否有 HttpResponse.ContentEncoding 的替代品?https://msdn.microsoft.com/en-us/library/system.web.httpresponse.contentencoding(v=vs.110).aspx