2013-08-27 5 views
6

Sto utilizzando FineUploader 3.7 nel progetto di caricamento cross-domain. Tutto è a posto finchè non sposto il codice sul server DEV del cliente che ha una semplice autenticazione. C'è un modo per incorporare le informazioni di autenticazione nel modulo quando la richiesta di preflight viene inviata al server?FineUploader - aggiungi l'autenticazione nell'intestazione

Ho provato a incorporare l'autenticazione di base nelle intestazioni, tuttavia non funziona. Si prega di fare riferimento al codice qui sotto:

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

E ancora di più, ho cercato di impostare l'intestazione personalizzata e senza fortuna:

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

risposta

9

L'opzione customHeaders non è definito in modo corretto. customHeaders è una proprietà dell'opzione request, come specificato nello request option documentation.

Il tuo codice di integrazione Belle Uploader dovrebbe essere simile a questo, invece:

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

Inoltre, si prega di tenere presente che jQuery di ajaxSetup non ha alcun effetto sulle chiamate Ajax/XHR di Belle Uploader. Fine Uploader non usa jQuery per niente internamente. Il plug-in opzionale jQuery offerto da Fine Uploader racchiude semplicemente la libreria javascript nativa per consentirne l'utilizzo semplice come plug-in jQuery supportando la sintassi comune associata ai plug-in jQuery e jQuery.

Inoltre, tenere presente che queste intestazioni non verranno trasmesse insieme alla richiesta di caricamento in IE9 e versioni precedenti, poiché IE9 e versioni precedenti non supportano i caricamenti tramite ajax/xhr. In quei browser, viene inviato un modulo, che indirizza un iframe. In caso di invio di un modulo, non è possibile associare intestazioni personalizzate alla richiesta.

+0

Hi Ray, grazie per il vostro feedback, tuttavia non funziona ancora. Dato che ci sono due richieste durante il caricamento del file. La prima richiesta di "preflight" non è riuscita con errore di autorizzazione 401. Ho controllato l'intestazione in Fiddler, non ci sono intestazioni di autorizzazione in esso. Mi sono perso qualcos'altro? – Peng

+0

Il preflight non conterrà intestazioni personalizzate. Fine Uploader non ha alcun controllo su questo, è solo il modo in cui CORS funziona. Se il preflight viene gestito correttamente dal tuo server, la richiesta originale verrà inviata dal browser con l'intestazione Authorization. Il tuo server dovrebbe essere configurato per rispondere correttamente alle richieste di preflight (OPTIONS) se stai lavorando in un ambiente cross-origin. –

+0

Grazie mille Ray. Ci scusiamo per la risposta in ritardo .... Un altro problema relativo alla richiesta OPZIONI di preflight, il nostro cliente ha detto che il metodo http "OPZIONI" è vietato sul loro server. Ci chiedono di rimuovere questa richiesta "OPZIONI". Tuttavia, secondo il tuo ultimo commento, suppongo che "OPTIONS" non possa essere rimosso nella nostra situazione CROS. Ho ragione? – Peng