Ich habe eine ungewöhnliche Anforderung. Im Wesentlichen brauche ich eine Möglichkeit, dass der Benutzer, wenn er auf einen Link oder eine Schaltfläche klickt, eine PDF erhält. Der heikle Teil hier ist, dass der Server die Anfrage an allen nicht verarbeiten wird, es sei denn, ein benutzerdefinierter Header wird mit ihm gesendet (andernfalls wird die Person als abgemeldet betrachtet und an den Anmeldebildschirm gesendet).Fordern Sie eine Datei mit einem benutzerdefinierten Header
Im Moment kann die Art, wie die Kopfzeile funktioniert, nicht geändert werden, also bitte nicht darauf verweilen; Es wird sich in Zukunft ändern und ist eine interne Anwendung, auf die ich keine Kontrolle habe.
- einen Iframe verwenden oder einfach ein neues Fenster mit einer Art Pfad öffnen, die PDF zurückkehren:
Die Optionen habe ich untersucht. Dies kann nicht funktionieren, da ich die erforderliche Kopfzeile für die PDF-Datei nicht angeben kann und vor dem Erreichen der PDF-Datei umgeleitet würde.
- Verwenden eines Formulars und das Senden der Anfrage kann nicht funktionieren, weil ich keine benutzerdefinierten Header Formulare hinzufügen kann (nur XHR und Plugins können, AFAIK).
- Die Verwendung von XHR kann nicht funktionieren, weil, während es die Kopfzeile hinzufügen und die Datei abrufen kann, gibt es keine Möglichkeit, es auf der Clientseite zu speichern.
Es wäre meine einzigen Optionen an dieser Stelle erscheint, sind im Wesentlichen:
- eine Art Plugin wie Flash oder Silverlight, die Datei anzufordern.
- Erzwingen Sie die Änderung der Anforderung viel früher als erwartet, so dass eine Kopfzeile nicht mehr benötigt wird.
Gibt es etwas, das ich hier vermisse? Ich hoffe, dass jemand meine Ergebnisse überprüfen oder auf etwas hinweisen kann, das ich vermisst habe, denn soweit ich das beurteilen kann, gibt es hier wirklich nichts, was ich tun könnte.
EDIT: Dies scheint geeignet und bestätigt, was ich dachte: XMLHttpRequest to open PDF in browser
Wie wäre es mit einer Art Tunnel zwischen der App und Ihrem Skript? Der Tunnel könnte die App abfragen und die Datei empfangen, und dann einen korrekten Header festlegen, bevor die Datei dem Benutzer gespült wird, wodurch tatsächlich ein Download ausgelöst wird. Ich weiß nicht, ob dies für Ihr System möglich ist, abhängig von der Sicherheit. –
Ein Tunnel ist keine schlechte Idee, obwohl ich mir nicht sicher bin, ob wir das hier umsetzen können. Hmm. Danke, ich werde mich darum kümmern. – Kris
Wenn Sie ohne Unterstützung für IE <10 (nicht sehr wahrscheinlich, richtig?), Können Sie XMLHttpRequest Level 2 (XHR2) und Blob URLs verwenden. Hier ein Beispiel: http://Stackoverflow.com/q/9620497 Siehe auch http://StackOverflow.com/q/6165266 und http://www.html5rocks.com/en/tutorials/file/xhr2/ –