2013-08-27 9 views
6

Ich benutze FineUploader 3.7 im Cross-Domain-Upload-Projekt. Alles ist in Ordnung, bis ich den Code auf den DEV-Server des Clients verschiebe, der eine einfache Authentifizierung hat. Gibt es eine Möglichkeit, Authentifizierungsinformationen in das Formular einzubetten, wenn die Preflight-Anforderung an den Server gesendet wird?FineUploader - Authentifizierung im Header hinzufügen

Ich habe versucht, grundlegende Auth in Header einbetten, funktioniert jedoch nicht. Bitte beachten Sie den Code unten:

$.ajaxSetup({ 
    headers: { 
     'Authorization': "Basic YZVjaGFmbWluOkNieWxjBTY3" 
    }, 
    beforeSend: function (jqXHR, settings) { 
     jqXHR.setRequestHeader('Authorization', 'Basic YZVjaGFmbWluOkNieWxjBTY3'); 
    } 
}); 

Und noch mehr, ich habe versucht, den benutzerdefinierten Header und kein Glück zu setzen:

var manualuploader = new qq.FineUploader({ 
    customHeaders: { 
    'Authorization': 'Basic YXVjaGFkbWluOkNieWxjZTY3' 
    },.... 

Antwort

9

Ihre customHeaders Option ist nicht richtig definiert. customHeaders ist eine Eigenschaft der Option request, wie in der request option documentation beschrieben.

Ihre Fein Uploader Integrationscode sollte wie folgt statt aussehen:

var manualuploader = new qq.FineUploader({ 
    request: { 
     endpoint: "path/to/your/server", 
     customHeaders: { 
      "Authorization": "Basic YXVjaGFkbWluOkNieWxjZTY3" 
     } 
    } 
}); 

Auch bitte beachten Sie, dass jQuery ajaxSetup ajax/xhr Anrufe keine Auswirkungen auf die Fein Uploader hat. Fine Uploader verwendet jQuery intern nicht. Das optionale jQuery-Plug-In, das von Fine Uploader angeboten wird, umschließt einfach die native javascript-Bibliothek, sodass sie problemlos als jQuery-Plug-in verwendet werden kann, indem sie die mit jQuery und jQuery-Plug-ins verbundene Syntax unterstützt.

Bitte beachten Sie auch, dass diese Header nicht zusammen mit der Upload-Anfrage in IE9 und älter übergeben werden, da IE9 und ältere keine Uploads über Ajax/Xhr unterstützen. In diesen Browsern wird ein Formular gesendet, das auf einen Iframe ausgerichtet ist. Im Falle einer Formularübermittlung gibt es keine Möglichkeit, benutzerdefinierte Header mit der Anforderung zu verknüpfen.

+0

Hallo Ray, danke für dein Feedback, aber es funktioniert immer noch nicht. Da gibt es zwei Anfragen während des Datei-Uploads. Die erste "Preflight" -Anforderung ist mit dem Autorisierungsfehler 401 fehlgeschlagen. Ich habe die Kopfzeile in Fiddler überprüft, es gibt keinen Berechtigungsheader darin. Habe ich etwas anderes vermisst? – Peng

+0

Das Preflight enthält keine benutzerdefinierten Header. Fine Uploader hat keine Kontrolle darüber, genau so funktioniert CORS. Wenn das Preflight von Ihrem Server korrekt gehandhabt wird, wird die ursprüngliche Anfrage vom Browser mit dem Berechtigungsheader gesendet. Ihr Server sollte so eingerichtet sein, dass er auf Preflight-Anfragen (OPTIONS) richtig reagiert, wenn Sie in einer Umgebung mit Ursprungsumgebungen arbeiten. –

+0

Vielen Dank Ray. Sorry für die Verzögerung Antwort .... Ein weiteres Problem über diese Preflight-OPTIONS-Anfrage, sagte unser Kunde, dass die HTTP-Methode "OPTIONS" auf ihrem Server verboten ist. Sie bitten uns, diese "OPTIONS" -Anfrage zu entfernen. Jedoch, nach Ihrem letzten Kommentar, ich denke, "OPTIONEN" kann nicht in unserer CROS Situation entfernt werden. Habe ich recht? – Peng