Эта тема на forum.dklab.ru


Organ: Не могу вывести pdf файл для открытия
Делаю http-запрос на другой сервер. Получаю контент pdf файла ($content). Далее делаю следующее:


//1.php
header("Content-type: application/pdf");
echo $content;


При открытии скрипта браузер спрашивает, что делать. Говорю 'Open', выдает следущюю ошибку:

'Internet Explorer cannot download 1.php from mysite.ru'. Говорит, что requested site is unavailable or doesn't exist...
Сайт лежит под https:// Может дело в этом?

Как исправить? Спасибо.

Да, еще хотелось бы убрать диалог "Что делать". Сразу открывать в браузере..
VAFil:
Organ
А запрос как делаете?.. Через CURL или fopen?..
Organ:
Через CURL ). Это кстати связано продолжение той темы, только я делаю экспорт отчета не в html, а в pdf. Но мне кажется, суть не в том, КАК я делаю запрос, контент я получаю нормальный, а в том как его вывести правильно.
VAFil:
Ну... Через fopen у меня все нормально выводится, а через CURL я проверить не могу.. =) В принципе, заголовок у вас правильный и, по идее, должен открывать документ прямо в браузере (ИЕ) или нормально сохранятся в других... Вы уверены, что у вас до контента ничего в браузер не отправляется?..
Organ:
Точно не отправлял, иначе я бы не смог header поставить... Если б я этот контент сохранил в Pdf Файл и положил на сервер, все б работало хорошо. Но мне нужен динамический вывод.
VAFil:
Organ
Я понимаю что динамический... Странно... Попробуйте для начала не через CURL, а через fopen открыть этот файл... Если не будет выводится - значит скорее всего что-то опять с апачем у вас... =)

header("Content-type: application/pdf");
$file = fopen("http://сайт.ru/1.pdf", "r");
$content = "";
while($f = fgets($file,4096))
{
$content .= $f;
}
echo $content

Organ:
Попробовал. Так он вообще https не может открыть возвращает "Authorization required". В CURL есть специальные опции.

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

Да и еще раз хочу сказать, что какая разница ЧЕМ я скачиваю файл. Считаем, что дано: pdf-файл в виде php строки. Задача: Вывести его в браузер так, чтобы он нормально открывался под https..
Organ:
Так.. Положил этот скрипт под http. Все заработало! Насколько я понимаю, нужно прописать где-то заголовки аутентификации прописывать. Как вот только?..
Organ:
Могу себя поздравить. Похоже мне в очередной раз повезло и я набрел на официальную ошибку microsoft. :-). Ну что за невезуха. А там написано, ничем вам помочь не можем. Кушайте наши баги.

http://support.microsoft.com/default.aspx?scid=kb%3Bru%3B812935

Хотя все равно одного не пойму!! Почему, если просто положить на сервер файл 1.pdf и открыть его все нормально. А если вот так вот закачивать, не работает. Я уж и хедеры продул, повставлял а все равно не пашет.

В файрфоксе все работает как надо..
VAFil:
Organ
Что-то вам особенно везет в последнее время... =)
Organ:
Мне так везет с того момента как я начал программировать (совсем недавно). Просто передо мной очень любят ставить извращенные и нестандартные задачи: типа написать cgi-шку, которая делает экспорт отчетов в разные форматы на дельфи, которая лежит на одном сервере, а к ней делает запрос другой сервер и еще извращеннейшим образом передаются параметры в этот отчет. А может я просто чайник..
VAFil:
Organ
Ну чайником я бы вас не назвал.. =) Но вот задачи действительно извращенные... =)
WingedFox:
Я эту проблему решил таким образом:

<IfModule mod_setenvif.c>
BrowserMatchNoCase MSIE Pragma=""
</IfModule>
<IfModule mod_headers.c>
Header set Pragma Pragma
</IfModule>

Organ:
WingedFox
Я пока мало что понимаю в настройках апача, поэтому перед установкой этого кода хочу спросить:

<IfModule mod_setenvif.c> -- это значит, заходим если установлен модуль mod_setenvif.c
BrowserMatchNoCase MSIE Pragma "" -- здесь, если браузер IE, мы устанавливаем переменную окружения Pragma="" ? Но ведь синтаксис такой: BrowserMatchNoCase MSIE Pragma="", разве нет или они экивалентны?

И еще вопрос: в чем разница между таким решением и написанием


header("Pragma:"); //то есть тоже Pragma пустое


На последнее он говорит что на странице есть non-secure items и не отображает совсем ничего.
WingedFox:
Organ
Да, опечатка
= должно быть
Organ:
Завтра проверю, напишу о результатах.
Organ:
Не помогло, все без изменений. Не устранить все-таки.. Или можно?
WingedFox:
Organ
Посмотрите передаваемые заголовки.
Если указанные модули присутствуют, то все заголовки Pragma должны быть вырезаны.
Во всяком случае, именно так оно работает на хостинге с SSL.

Ну или попробуйте принудить IE кешировать контент.

Эта тема на forum.dklab.ru