У меня есть интересная проблема, которая, я думаю, связана с сервером. Я хочу, чтобы CSV-данные сохранялись как CSV-файл, когда пользователь нажимает кнопку. Он отлично работает на моем сервере разработки, но на его производстве это просто эхо-контент на странице. Я предполагаю, что это проблема сервера, но я действительно не уверен, что это может быть. Может ли GZIP повлиять на это?Сохранить csv как файл вложения PHP + установка Apache не работает
Мой код заголовка выглядит следующим образом:
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: " . strlen($out));
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=$filename");
echo $out;
Так что приведенный выше код работает на сервере разработки и производства только будет эхо CSV на страницу. Есть идеи?
Ссылаясь на ответ Кристиана, я изучил HTTP, а живой сервер - это не то же самое. Он добавляет следующее: Vary: Accept-Encoding И тогда Content-Type не то, что я указываю в PHP и курортов: Content-Type: текст/html; charset = iso-8859-1 – AndreLiem
Теперь вы можете добавить более подробную информацию о конфигурации сервера в реальном времени, возможно, мы сможем найти настройку конфигурации, которая ее поддерживает – Christian
Глядя на документы W3C для HTTP/1.1, ключевое слово Vary изменит контент, введите, если тип содержимого, который вы определили, отсутствует в списке. Поэтому вам нужно добавить его в список в httpd.conf или .htaccess. Возможно, добавление текста/x-csv в заголовок Accept-Encoding сделало бы трюк. http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html (прокрутить вниз до 14.44) http://httpd.apache.org/docs/2.0/content-negotiation.html –