2010-04-29 9 views
7

Ecco la richiesta e la risposta intestazioniQuando si invia le intestazioni per scaricare un PDF, Safari accoda .html

http://www.example.com/get/pdf 

GET /~get/pdf HTTP/1.1 
Host: www.example.com 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Referer: http://www.example.com 
Cookie: etc 

HTTP/1.1 200 OK 
Date: Thu, 29 Apr 2010 02:20:43 GMT 
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8i DAV/2 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 
X-Powered-By: Me 
Expires: Thu, 19 Nov 1981 08:52:00 GMT 
Pragma: no-cache 
Cache-Control: private 
Content-Disposition: attachment; filename="File #1.pdf" 
Content-Length: 18776 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html; charset=utf-8 
---------------------------------------------------------- 

In sostanza, le intestazioni di risposta sono inviati con il metodo del dompdf stream().

In Firefox, il file viene richiesto come File #1.pdf. Tuttavia, in Safari, il file viene salvato come File #1.pdf.html.

Qualcuno sa perché Safari aggiunge l'estensione html al nome file?

Sto anche utilizzando Kohana 3, che serve il PDF da un metodo di controllo.

+2

Potrebbe essere correlato al tipo di contenuto impostato su text/html? – Kitsune

risposta

10

Da quello che vedo il tipo di contenuto non è corretto, credo che se è risolto, il problema verrà risolto.

+1

Assolutamente mancato! Immagino che lo imposterò in 'application/pdf' allora. – alex

+0

sì, penso che dovrebbe risolvere il problema –

2

Perché stai dicendo che è HTML. Risolvi il tuo tipo MIME.

Content-Type: text/html; charset=utf-8 
2

È possibile modificare la modalità Kohana 3 invia le intestazioni in questo modo ...

$this->request->headers['Content-Type'] = File::mime($file); 
1

Ho risolto con l'aggiunta di morire(); dopo lo streaming

$dompdf = new DOMPDF(); 
$dompdf->set_paper("a4", "portrait"); 
$dompdf->load_html($html); 
$dompdf->render(); 
$dompdf->stream($invoice.".pdf"); 
die(); 
+0

Questo ha funzionato per me utilizzando la libreria League \ Csv con Laravel 4.2. Le intestazioni apparse vengono aggiunte o modificate dopo aver chiamato '$ csv-> output ('file.csv');', confuso Safari. Aggiungi 'die; 'dopo aver chiamato l'output. –

Problemi correlati