Response.Write("<script language=\"javascript\">window.open( with https and pdf
В приложении Asp.Net 1.1.4332 мы делаем следующее:
кнопка запускает серверное событие, которое выполняет некоторую обработку и помещает данные в объект сеанса, после чего выполняется следующий код:
string page = Request.ApplicationPath + "/ApkRapportPage.aspx";
Response.Write("<script language=\"javascript\">window.open('" + page + "','_new');</script>");
это открывает страницу, которая передает PDF в новое окно браузера
в основном со следующим кодом (я знаю, что здесь чего-то не хватает, но это не очень важно для вопроса)
byte [] pdfbytes = Convert.FromBase64String (rapportB64);
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = GetContentType(format);
string header = GetContentDispostionHeader(fileName, format, type);
Response.AddHeader("Content-Disposition", header);
Response.BinaryWrite(pdfbytes);
Response.End();
Хорошо, этот код работает!
Только не в IE6 и IE7 при использовании HTTPS
При использовании IE6 с HTTPS появляется диалоговое окно сохранения как (не PDF-файл, который открывается в браузере)
При использовании IE7 с HTTPS это приводит к пустому экрану
При использовании Firefox он работает просто отлично
Если я имитирую дополнительную обработку на стороне сервера в page_load для помещения необходимых данных в сеанс и заменяю кнопку ссылкой, которая открывает ту же страницу создания PDF в новом окне, код работает.
Для реального применения невозможно получить необходимые данные до нажатия кнопки.
Так что мне бы очень хотелось, чтобы следующий код работал
string page = Request.ApplicationPath + "/ApkRapportPage.aspx";
Response.Write("<script language=\"javascript\">window.open('" + page + "','_new');</script>");
Вопросы:
Кто-нибудь знает, почему этот код не работает в IE6 и IE7 при использовании HTTPS?
Что нужно для того, чтобы код заработал?
Дополнительная информация:
- Я пытался не использовать response.write, но
просто javascript window.open позади
кнопка, это имеет тот же эффект
- при поиске в потоковом режиме PDF вы можете найти множество людей,
Беда с этим, в основном они поставили
длины заголовков или другие свойства или
флаги сжатия статических файлов в IIS.
Я уверен, что попробовал их
все.
- Настройки Adobe Acrobat Reader, настройки браузера или любого другого клиента
настройки стороны не кажутся
проблема. Проверено на разных
машины, с http работает, с https
это не так.
- Переключение между https и http может быть как-то связано с этим,
но когда я установил IE, чтобы сказать мне, когда я
переключаюсь, переключение не происходит
происходят во время тестирования.
- При замене части window.open на response.redirect код также работает, но не в новом окне
Любая помощь будет принята с благодарностью!
В соответствии с запросом заголовков, как показано Fiddler:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Thu, 05 Mar 2009 14:18:36 GMT
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Content-Disposition: Inline;filename=APKrapport.pdf
Cache-Control: private
Content-Type: application/pdf; charset=utf-8
Content-Length: 28307