.exe an header senden
Maximus
- php
Hallo,
ich habe ein PHP-Script, was mir eine Datei aus einem geschützen Ordner an den User weiterleitet.
Beispiel:
Man gibt ein:
http://<DOMAIN>/download.php?file=game1.exe
Das Script geht dann in das Verzeichnis /download/games/ dann machte es einen Header Content-Type mit application/octet-stream. Dann wird die Datei ausgegeben.
Das Problem ist, dass dann bei "Speichern unter" nicht die Datei "game1.exe" sondern "download.php" steht. Wenn ich die Datei herunterlade und sie umbennene in game1.exe klappt das Game.
Wie kann ich dem Header sagen, dass es die Datei Game1.exe zum Download anzeigen soll und nicht die download.php? Es ist ja nur der Name und die Endung falsch. Die Datei, die gedownloaded wird ist ja die richtige.
Zum Test:
http://www.example.net/test.php?file=java.exe
Gruß
Maximus
Hi,
Das Problem ist, dass dann bei "Speichern unter" nicht die Datei "game1.exe" sondern "download.php" steht. Wenn ich die Datei herunterlade und sie umbennene in game1.exe klappt das Game.
versuch's mal mit dem Content-Disposition-Header, der ist nämlich genau für solche Zwecke vorgesehen:
header('Content-Disposition: attachment; filename="game1.exe"')
Viele Grüße
Benjamin
Hi,
versuch's mal mit dem Content-Disposition-Header, der ist nämlich genau für solche Zwecke vorgesehen:
vielleicht noch diese kleine Ergänzung: Content-Disposition gehört nicht offiziell zum HTTP-Standard, sondern wurde einfach nur von einigen Clients aus einem anderen Zusammenhang übernommen (in HTTP dürfen neue Header frei "erfunden" werden).
Das bedeutet, dass das gewünschte Verhalten unter Umständen nicht in jedem Browser implementiert wurde. Inwieweit welche Software das unterstützt, weiß ich nicht und konnte ich auch in der Kürze der Zeit nicht herausfinden. Die zurzeit gängigsten Browser gehören aber – soweit ich weiß – dazu. Da aber unbekannte Header ignoriert werden müssen, ist das Schlimmste, das dir passieren kann, sowieso nur, dass weiterhin eine download.php zum Download angeboten wird.
Viele Grüße
Benjamin
Hallo Benjamin,
versuch's mal mit dem Content-Disposition-Header, der ist nämlich genau für solche Zwecke vorgesehen:
vielleicht noch diese kleine Ergänzung: Content-Disposition gehört nicht offiziell zum HTTP-Standard, sondern wurde einfach nur von einigen Clients aus einem anderen Zusammenhang übernommen (in HTTP dürfen neue Header frei "erfunden" werden).
Huh? Du verlinkst auf eine Stelle im HTTP-Standard und behauptest, der Header wäre nicht offiziell darin enthalten? Was denn nun? Ok, in HTTP/1.0 ist's nicht enthalten, aber in HTTP/1.1 ja offensichtlich schon, Du verlinkst den ja selbst.
Viele Grüße,
Christian
Hi,
Huh? Du verlinkst auf eine Stelle im HTTP-Standard und behauptest, der Header wäre nicht offiziell darin enthalten? Was denn nun? Ok, in HTTP/1.0 ist's nicht enthalten, aber in HTTP/1.1 ja offensichtlich schon, Du verlinkst den ja selbst.
ja, ich habe mich selbst gewundert, aber folgendes kann man doch eigentlich nicht falsch verstehen, oder?
"See section 15.5 for Content-Disposition security issues."
Dort heißt es weiter: "Content-Disposition is not part of the HTTP standard, but since it is widely implemented, we are documenting its use and risks for implementors."
Viele Grüße
Benjamin