Error 330 (net::ERR_CONTENT_DECODING_FAILED)

newARTix

Новичок
У коллег в одном из офисов, Google Chrome ругается такой ошибкой при попытках открыть некоторые сайты сделанные мной.
- Они (коллеги) работают через фаервол Kerio WinRoute Firewall (читай прокся)
- У них софт Ubunt 10.10, Chrome последний, какой-то там, в Firefox 3.6.12 сайт тоже не совсем корректно работает (это касается подгрузки JS, кэширования и т.п.), хотя ошибок не выдает.
- Сделанные мной сайты выдают html, js и css сжатые через output_buffer алгоритмом deflate

По хрому на гугле пишут:
http://www.google.com/support/forum/p/Chrome/thread?tid=3388bd392b939f43&hl=en
Но вот решения я что-то там не вижу, кроме как выключить фаервол, что не является решением.

Кто-нибудь сталкивался? Подскажите как решили?
 

iceman

говнокодер
а ты проверяешь, поддерживает ли браузер сжатие? (это смотря какие функции ты используешь)

а вообще нужно посмотреть запрос который отсылает клиент (за фаерволом) серверу.

и if(!ob_start("ob_gzhandler")) ob_start(); делай так +)

и не режится ли ответ от сервера: Content-Encoding gzip?

а вообще это сжатие уже никому не нужно, браузер кеширует js, css
 

newARTix

Новичок
iceman
да, проверяю. Вот минимальный код:
Код:
function compress_output_gzip($output) {
	header('Content-Encoding: gzip');
	return gzencode($output); 
}

function compress_output_deflate($output) { 
	header('Content-Encoding: deflate');
	return gzdeflate($output); 
}

if(isset($_SERVER['HTTP_ACCEPT_ENCODING'])) $AE = $_SERVER['HTTP_ACCEPT_ENCODING'];
else $AE = isset($_SERVER['HTTP_TE'])?$_SERVER['HTTP_TE']:null;

if (strpos($AE, 'deflate') !== false) ob_start('compress_output_deflate');
elseif(strpos($AE, 'gzip') !== false) ob_start('compress_output_gzip');
Еще информация к размышлению:
- ошибка выдается только при первом запросе URL, после нажатия на F5 все нормально загружается.
- тот же браузер и ос, когда работает напрямую, без указанного фаервола, открывает сайт нормально, без ошибок и глюков.
- сайт работает на ник.ру, аналог сайта на мастерхосте и через фаервол работает нормально, без глюков.

Насчет того чтобы посмотреть запросы клиента это хорошая идея, сейчас сделаю логирование запросов с их айпишника на самом сайте, может что-то прояснится.

Насчет целесообразности сжатия - возможно, но проблема как раз в сжатии html, а не только js/css.
 

iceman

говнокодер
Content-Encoding ты отсылаешь, а не режет ли его фаервол? (вроде как в Керио таки фичи есть...) нужно сравнить запрос от клиента до и после фаервола, аналогично с ответами сервера.
 

newARTix

Новичок
iceman
блин, как бы это всё проделать не выезжая к ним... удаленный доступ просить... так лениво, но видимо придется.
 

Активист

Активист
Команда форума
Я думаю надо с 80 порта в KWF убрать протоколь инспектор в разделе сервайсес (отвалятся логи кто куда ходил), но их протокол инспектр уг.
 

newARTix

Новичок
Активист
Скорее всего там режим NAT, хотя я чето не уточнил. Да даже NAT может всё что хочешь вытворять, так что все-равно видимо придется с их стороны копать.
 

Активист

Активист
Команда форума
Если NAT то однозначно - надо с 80 порта в KWF убрать протокол инспектор (тогда трафик модифицироваться не будет на стороне KWF).
Но, не так НОООО!!!!1111 за 4 года опыта с KWF я не видел такой проблемы. Кстати, зачем дефлатить через PHP - Nginx, Apache - хорошо это умеют, PHP не для того ))

> header('Content-Encoding: gzip');
Warning! HTTP ответ у тебя случаем не в 1.0 идет? А то ты задефлатил и заганзипил, а версию HTTP протокола сменил?
PHP:
header("HTTP/1.1 200 OK", true, 200); // или просто header('HTTP/1.1 200 OK");
header('Content-Encoding: gzip');
 

newARTix

Новичок
Активист
через пхп проще, когда имеешь дело в основном с виртуальными хостингами, на большинстве из которых возможности настройки апача весьма ограничены, а главное непредсказуемы.

Насчет header('HTTP/1.1 200 OK"); это ты верно подметил, в пхп я нигде явно 1.1 не выдаю, оставляю заголовок 200 на совести сервера. Проверил - мне он выдает HTTP/1.1 200 OK, а вот что он им выдает... В общем не буду гадать, завтра буду просить удаленный доступ к ним.
Спасибо!
 

Активист

Активист
Команда форума
А сервер у тебя его дважды не дефлатит?))) Сначала ты, а потом сервер?
 

Активист

Активист
Команда форума
Кинь в личку урл сайта, и так, что бы я посмотрел чистый ответ (без дефлата) и после
 

newARTix

Новичок
Да вроде нет... У nic.ru на этот счет отдельная галочка в настройках есть. А как это проверить кстати? :)
Вот сейчас WireShark'ом посмотрел, он нормально всё отдекодил.
Насчет урла и экспериментов, давай уже не сегодня, я и так слишком отвлекся от работы на этот глюк. Если завтра не разберусь, тогда поэкспериментируем :)
 

iceman

говнокодер
newARTix
если бы дважды было сжатие, то нигде бы не работало.

проблема явно в заголовках ответа сервера после фаервола.
 
Сверху