2011-02-26 66 views
1

我想上傳一個文件到服務器,並有我的DOM元素設置爲這樣:如何將授權標頭添加到DOM表單元素?

 _uploadForm = document.createElement("form"); 

     _uploadForm.method = "POST"; 
     _uploadForm.action = "#"; 

     if(_isBrowser.IE) 
      _uploadForm.encoding = "multipart/form-data"; 
     else 
      _uploadForm.enctype = "multipart/form-data"; 

我的服務器需要HTTP基本授權頭。我怎樣才能通過這個DOM元素?

回答

0

DOM元素與授權無關,它們只是內部瀏覽器對各種html標籤的表示。服務器要求授權 - 如果頁面位於受保護區域內,則服務器將要求憑證,並且與表單本身無關。

+0

感謝您的澄清。如果是這種情況,我如何驗證服務器的憑據? – 2011-02-26 03:16:41

+0

服務器如何提示?基本的httpd認證(即:用戶名/密碼彈出)?重定向到表單? – 2011-02-26 03:27:16

+0

基本http認證。需要通過我的密鑰 – 2011-02-26 07:10:29

0

最簡單的方法是從同一個文件夾提供上傳表單和上傳處理程序,並使用.htaccess爲兩者強制執行基本身份驗證。然後,瀏覽器在加載上傳表單時自動請求憑證,憑證將自動隨上傳(我相信)發送。

但是,最好的辦法是不要使用HTTP基本認證。除非您使用SSL,否則它會以明文形式發送密碼,並且通常使用起來很麻煩。

如果你堅持使用Basic,我相信它可以使用ActionScript(編譯爲SWF)完成。我也知道在AJAX調用中設置授權標頭的方法,但不能通過AJAX調用上載文件,瀏覽器不記得通過AJAX調用發送的授權標頭。

1

您的JavaScript客戶端在提交表單時將不得不添加標題。 我不確定你正在使用哪一種javacript客戶端庫,但是像angular這樣的東西可以讓你設置默認頭文件,甚至可以在發送前添加頭文件的攔截器。

 var req = { 
method: 'POST', 
url: 'http://example.com', 
headers: { 
    'Content-Type': undefined, 
    'Authorization': 'your-scheme your-token-perhaps' 
}, 
data: { test: 'test' } 
}