I) Мой прокси-сервер передает заголовок Accept-Encoding, который он получил от клиента, на мой серверный сервер содержимого как-будто-есть. Данные, полученные с сервера backend, отправляются в запрашивающий браузер, просто используя PHP echo (без заголовков обработки отдельно). Однако данные отображаются в браузере как необработанные двоичные данные.PHP curl и gzip: браузер не обрабатывает ответ gzip
Если я не передаю какой-либо Accept-Encoding на моем сервере контента, тогда все будет в порядке.
Поскольку браузер принимает данные GZIP, почему мой прокси-сервер должен его декодировать - почему напрямую не передаются данные gzip обратно в браузер? Вместо того, чтобы запускать данные на прокси-сервере, есть ли какие-то настройки, которые у меня отсутствуют, что заставит все работать?
II) на основе предложений stillstanding, я попробовал новый путь (но теперь я больше запутывается, как у него есть свои собственные проблемы) !.
Я использовал
....
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, связанные с свернуться GZIP, но они не в состоянии разрешить мои сомнения).
Получает ли браузер заголовок «Content-Encoding»? – stillstanding 2010-11-27 10:51:07