2013-08-27 51 views
6

我在跨域上傳項目中使用FineUploader 3.7。一切都很好,直到我將代碼移動到具有簡單身份驗證的客戶端DEV服務器。當預檢請求發送到服務器時,是否有方法將認證信息嵌入到表單中?FineUploader - 在標頭中添加身份驗證

我試圖在頭文件中嵌入基本身份驗證,但無法正常工作。請參考下面的代碼:

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

甚至更​​多,我已經嘗試設置自定義頁眉和沒有運氣:

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

回答

9

customHeaders選項未正確定義。 customHeadersrequest選項的財產,詳見request option documentation

貴精上傳集成代碼看起來應該是這樣,而不是:

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

另外,請記住,jQuery的ajaxSetup對精細上傳的Ajax/XHR調用沒有影響。 Fine Uploader在內部不使用jQuery。 Fine Uploader提供的可選jQuery插件簡單地包裝原生JavaScript庫,以便通過支持與jQuery和jQuery插件相關的常用語法,將其容易地用作jQuery插件。

此外,請注意,由於IE9及更高版本不支持通過ajax/xhr上傳,因此這些標頭不會與IE9及更舊版本中的上傳請求一起傳遞。在這些瀏覽器中,提交了一個定位iframe的表單。在表單提交的情況下,無法將自定義標題與請求相關聯。

+0

嗨雷,感謝您的反饋,但它仍然無法正常工作。由於在文件上傳過程中有兩個請求。第一個「預檢」請求因401授權錯誤而失敗。我檢查了Fiddler中的頭文件,其中沒有授權標頭。我錯過了別的東西嗎? – Peng

+0

預檢不包含任何自定義標題。 Fine Uploader無法控制這一點,這只是CORS的工作方式。如果預檢由您的服務器正確處理,那麼原始請求將由具有授權標頭的瀏覽器發送。如果您在跨源環境中工作,則應將服務器設置爲正確響應預檢(OPTIONS)請求。 –

+0

非常感謝雷。對於延遲響應抱歉....另外一個關於預檢OPTIONS請求的問題,我們的客戶說他們的服務器禁止http方法「OPTIONS」。他們要求我們刪除這個「OPTIONS」請求。但是,根據您最後的評論,我想在我們的CROS情況下無法刪除「選項」。我對嗎? – Peng