我的测试用例只是添加到头部的 HTML 脚本标记,但基本上 iOS Safari 上的每个 HTTP 请求都没有设置 Accept-Encoding 头部。
我使用Paros跟踪 HTTP 请求,并验证该请求确实通过以下标头发送到我们的 Nginx 服务器。
HTTP 请求:
GET http://www.website.com/8EF47773B9E25308C1F124FF701E607A.cache.js HTTP/1.1
Host: www.website.com
Referer: http://www.website.com
Proxy-Connection: keep-alive
Accept: */*
Accept-Language: en-us
Connection: keep-alive
User-Agent: Mozilla/5.0 (iPad; CPU OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B141
HTTP 响应:
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=2592000
Cache-Control: private
Content-Type: application/x-javascript
Date: Tue, 26 Feb 2013 22:56:39 GMT
Expires: Thu, 28 Mar 2013 22:56:39 GMT
Last-Modified: Mon, 25 Feb 2013 17:54:27 GMT
Server: nginx/1.2.3
Content-Length: 1042909
Connection: keep-alive
只需添加“Accept-Encoding: gzip,deflate”和上面完全相同的请求标头(使用 Curl)就会返回一个 gzipped 响应。
这也只发生在设备上;使用 iOS 模拟器将添加正确的 Accept-Encoding 标头。
这是 iOS Safari 的预期行为吗?我已经在互联网上搜索了更多关于这方面的信息,但结果很少。