I) Мой прокси-сервер передает заголовок Accept-Encoding, полученный от клиента, моему внутреннему контент-серверу «как есть». Данные, полученные с внутреннего сервера, отправляются запрашивающему браузеру просто с помощью PHP echo (без обработки заголовков отдельно). Однако данные отображаются в браузере как необработанные двоичные данные.
Если я не передаю Accept-Encoding на свой контент-сервер, то все в порядке.
Поскольку браузер принимает данные GZIP, почему мой прокси-сервер должен декодировать их - почему не работает прямая передача данных gzip обратно в браузер? Вместо того, чтобы разархивировать данные на прокси-сервере, не хватает ли какой-то настройки, которая заставит все работать?
II) Исходя из предположений, сделанных до сих пор, я попробовал новый способ (но теперь я более растерян, поскольку у него есть свои проблемы)!.
Я использовал
....
curl_setopt($curl_handle, CURLOPT_HEADER, 1);
$result = curl_exec($curl_handle);
curl_close($curl_handle);
и вместо повторения результата я делаю:
list($headers,$content)=explode("\r\n\r\n",$result,2);
foreach (explode("\r\n",$headers) as $hdr) {
header($hdr);
}
echo $content;
Теперь браузер распознает, что данные были сжаты, но дает возможность сохранить файл gzip вместо отображения содержимого. Как упоминалось ранее, я просто передаю Accept-Encoding, которую дает мне браузер, тогда почему проблема?
спасибо
JP
PS: (Я видел некоторые другие вопросы по SO, связанные с curl gzip, но они не смогли разрешить мои сомнения).