猿问

curl 可以看到能输出gzip 但是在浏览器下却没有输出

环境nginx+php-fpmcurl-v-I-H"Accept-Encoding:gzip,deflate"http://www.ihezhu.com/*Abouttoconnect()towww.ihezhu.comport80(#0)
*Trying210.51.54.180...connected
>HEAD/HTTP/1.1
>User-Agent:curl/7.22.0(i686-pc-linux-gnu)libcurl/7.22.0OpenSSL/1.0.1zlib/1.2.3.4libidn/1.23librtmp/2.3
>Host:www.ihezhu.com
>Accept:*/*
>Accept-Encoding:gzip,deflate
>
HTTP/1.1200OK
Server:nginx
Date:Fri,18Jan201310:13:19GMT
Content-Type:text/html;charset=utf-8
Connection:keep-alive
Vary:Accept-Encoding
Set-Cookie:PHPSESSID=i6nkkd79n7uenikq2727u8rln6;path=/
Expires:Thu,19Nov198108:52:00GMT
Cache-Control:no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Pragma:no-cache
Content-Encoding:gzip
*nochunk,noclose,nosize.Assumeclosetosignalend
<
*Closingconnection#0但直接浏览器却没有看到输出Content-Encoding大概怎么回事?
谢谢====update
原因暂时还不明,说下我做的测试
用fiddler访问,不输出
用fiddler按照curl构造参数,不输出
用chrome插件模拟curl请求,不输出
在本机模拟了服务器配置一致的环境(php.ini,fastcgi,nginx.conf以及站点配置),可以输出
现在准备在curl中模拟browser的请求,看看怎样
繁星coding
浏览 997回答 2
2回答

繁星淼淼

建议你用wireshark抓包看看,可能只是chrome没显示这个出来。感觉chrome的开发者工具不那么靠谱,比如显示出了Transfer-Encoding:chunked,但是显示出来的却找不是原始的response(不是chunked的格式)。

HUH函数

这个问题很有意思,我猜是你在curl的时候,requestheaders提供的不足,所以没有被CDNcache到.但是在浏览器的情况下,requestheaders很完整,所以CDN就起作用了,既然CDN服务器节点靠近你自己的网络,那么就不用压缩了,直接返回给你明文,跳过gzip节省浏览器解压时间,加速网页响应.我这么猜是因为responseheader里面有个Vary,查了一下Vary的功能和CDN有关
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答