[Just to get the headers here, I used: "curl -I http://ora.ouls.ox.ac.uk/objects/uuid%3A4af22069-ec0e-4407-b42d-2926c5a6c9ca/datastreams/ATTACHMENT01"]
Server Response:
HTTP/1.1 200 OK
content-length: 53760
content-disposition: attachment; filename="uuid4af22069-ec0e-4407-b42d-2926c5a6c9ca-ATTACHMENT01.doc"
accept-ranges: bytes
last-modified: Wed, 11 Jun 2008 13:54:45 GMT
content-range: 0-53759/53760
etag: 1213192485.0-53760
content-type: application/msword
x-pingback: http://ora.ouls.ox.ac.uk/pingback
Date: Wed, 11 Jun 2008 13:54:45 GMT
Server: CherryPy/3.0.2
- Firefox (any version, any OS) downloads this and passes it to an external app fine, job done.
- Safari, same deal.
- Camino, ditto.
- Opera, not a problem.
- Even Internet Explorer 7, downloads it and opens it fine.
Internet Explorer 6 -> Adobe Acrobat says "Error, file not found"
Internet Explorer 5 -> Adobe still says "Error, file not found"
I'll post up the fix to IE5/6 not being able to download the file properly. It's all in the response headers, and I'll let you play spot the difference:
Server Response (works with IE5/6):
HTTP/1.1 200 OK
content-length: 53760
content-disposition: attachment; filename="uuid4af22069-ec0e-4407-b42d-2926c5a6c9ca-ATTACHMENT01.doc"
accept-ranges: bytes
last-modified: Wed, 11 Jun 2008 13:54:45 GMT
content-range: 0-53759/53760
etag: 1213192485.0-53760
pragma:
content-cache:
content-type: application/msword
x-pingback: http://ora.ouls.ox.ac.uk/pingback
Date: Wed, 11 Jun 2008 13:54:45 GMT
Server: CherryPy/3.0.2
Found it? No?
etag: 1213192485.0-53760
pragma:
content-cache:
content-type: application/msword
That's right, adding empty fields into the response headers magically fixes the download issue for IE6 and 5. One day, I'll find an IE engineer and if I do, when I do... well... my bail money will be with my lawyer. in that case.
2 comments:
And this is definitely a problem with IE5/6 and not the server software?
So it is putting the headers in for itself? That sounds wrong in more levels than should be possible.
Yep - it is one of those lesser recorded "features" of IE5/6 that is coded round by existing servers like Apache.
Without the optional Pragma and Cache-control header fields, IE fails to handle the Content-Disposition header properly. The server needs to add them for IE to handle it properly. Google for things like "IE6 drupal pdf" to see similar problems.
Post a Comment