javascript - 使用 angular 的 http get 方法时,浏览器端不会自动解压 gzipped json

标签 javascript json angularjs gzip

我正在尝试使用 angular (v1.2.6) 加载一个 json 文件:

$http.get('myfile.json').success(function(data) { ... }

这工作正常,除非我在服务器上创建文件的(静态)压缩版本,并尝试加载“myfile.json.gz”(以减少加载时间)。

请求 header 似乎正确(Mac 上的 Chrome 31.0)(如 herehere 所述):

Accept: application/json, text/plain, */*
Accept-Encoding: gzip,deflate,sdch

而响应 header 包含:

Connection: close
Accept-Ranges: bytes
Content-Length: 702468
Content-Type: application/x-gzip
Content-Encoding: gzip

但是,内容不会被客户端浏览器自动解压,据我了解it should be . data.length 是 ~700Kb 而不是原始未压缩的 ~3Mb。

虽然这一个post建议它需要手动完成,我理解解压缩应该是自动和透明的。

我的问题是,是否应该自动解压?为什么这里不是这种情况?

最佳答案

你的内容类型不应该是“application/x-gzip* 它应该保留: 应用程序/json

内容编码足以告诉浏览器内容已压缩。

您正在运行什么 HTTP 服务器? 您应该配置它以返回正确的 MIME 类型,而不考虑 .gz 扩展名。

关于javascript - 使用 angular 的 http get 方法时,浏览器端不会自动解压 gzipped json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859246/

相关文章:

php - 当发生太多 $.getJSON 请求时,keyup 函数会卡住页面

javascript - 将 new Date() 转换为包含 T 的格式

javascript - 使用 iOS 通过 Javascript 下载网站上的文件

javascript - 扩展现有单例

Javascript != 不转换为 null?

php - 从 PHP 数组循环遍历 Javascript 数组

json - 我怎样才能解决这个问题?从 '[String]' 转换为无关类型 '[String : AnyObject]' 总是失败

javascript - 使用js将原始数据转为Array或Json

javascript - ng-include 用于页眉/页脚

javascript - AngularJS不过滤产品列表