İşte
gider ... Ben Facebook kez kıvrılıp yaptığı gibi Safari aynı Content-Length döndürdüğünü görmek ve bu içerik uzunlukta yanlış 11252 geçerli:
GET /hprofile-ak-snc4/41674_660962816_995_n.jpg HTTP/1.1
User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3
Host: profile.ak.fbcdn.net
Accept: */*
HTTP/1.1 200 OK
Content-Type: image/jpeg
... snip ....
Content-Length: 11252
Ve Safari ile :
Yani
GET /hprofile-ak-snc4/41674_660962816_995_n.jpg HTTP/1.1
Host: profile.ak.fbcdn.net
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27
... snip ...
HTTP/1.1 200 OK
Content-Type: image/jpeg
... snip ...
Content-Length: 11252
Ben Facebo tahmin gidiyorum Tamam yanlış Content-Length gönderiyor. Bunu test etmek için, ben Netcat'i kullanacağız:
$ cat headers
GET /hprofile-ak-snc4/41674_660962816_995_n.jpg HTTP/1.0
Host: profile.ak.fbcdn.net
Accept: */*
EOF
$ nc -vvv profile.ak.fbcdn.net 80 output
Warning: Inverse name lookup failed for `142.231.1.174'
Notice: Real hostname for profile.ak.fbcdn.net [142.231.1.165] is a142-231-1-165.deploy.akamaitechnologies.com
profile.ak.fbcdn.net [142.231.1.174] 80 (http) open
Total received bytes: 12k (11639)
Total sent bytes: 97
$ head output
HTTP/1.0 200 OK
Content-Type: image/jpeg
... snip ...
Content-Length: 11252
(kullandığım dikkat HTTP/1.0 yüzden Facebook sunucuları açık bağlantı tutmaya çalıştığım olmaz) ilk 10 satırları Çıkarma
ouput
'un bir metin editörü kullanarak output.jpg
olarak kaydetmesini sağlayarak tam görüntüye sahibim.
Bu nedenle, Facebook'un Content-Length
numaralı bir üstbilgiyi yanlış gönderdiğinden emin olun (ve kıvrım netcat yokken içerik uzunluğuna dikkat ettiğinden resim kesiliyor).
Biraz daha kazma, bu Aleski'nin doğru gibi görünüyor - görüntü gzip sıkıştırılmış olduğunda Content-Length
doğrudur. Bunu doğrulamak için 'u headers
dosyama ekledim. Facebook, beklenen uzunluk olan bir gzip'd yanıtını doğru bir şekilde gönderir ve açılmadan doğru görüntüye yol açar.
tl; dr: Content-Encoding
gzip
değilse Facebook'un Content-Length
yanlıştır.
Harika. Bunu anlamak için teşekkürler. – Leopd