2013-03-19 65 views
2

有沒有辦法在表單數據中包含其他請求標頭,而不是actionmethod?我希望發送一些身份驗證憑據跨域而不會讓用戶重新輸入他們的登錄憑據。即我想直接從表單提交構建一個Authentication標頭。以表單形式包含其他HTTPS請求標頭信息

該域名已啓用SSL,因此我考慮在URL中包含憑據,但正如解釋here這是一個壞主意,因爲這些憑據可能在連接上是安全的,但可以通過其他應用程序通過瀏覽器訪問。

放大圖

我有過一個AJAX請求到客戶端服務器(主域)訪問跨域用戶名和密碼。我希望獲取這些憑據並通過非AJAX請求提交它們,以便用戶可以安全地下載文檔,而無需公開訪問URL。

回答

1

對於具體的問題,我相信答案是否定的 - 您無法控制從表單本身發送任何額外的標頭。還有一些其他的東西你可以用表格發送,但是它們對你想要做的沒有用處:W3 Form Tag Specification

你可以做的是做一個表單POST,這是一個表單,出了問題和查詢字符串不會做;只需使用帶有憑證的某種令牌/散列的隱藏字段即可。避免像瘟疫一樣的密碼明文,並且確實儘量避免對它們進行可逆加密。這只是其中一個方面,您必須格外小心,以避免造成易於被利用的安全漏洞。

但一般來說它工作得很好,任何可以做AJAX GET的應該都可以做AJAX POST。

+0

所以我懷疑這方面的一些事情。當我提交表單並說我有''和''我提交表單,用戶名和值不會暴露在查詢字符串中?我以前使用Django,看起來這是它如何進行身份驗證。我瞭解你嗎? – 2013-03-19 18:16:13

+0

你當然是!這是GET與POST表單操作的區別之一。在GET請求中,表單是通過url編碼的,並在HTTP請求URL中傳遞,但在POST中,url編碼的數據實際上是在HTTP請求的主體中發送的 - URL本身未被更改。結果是,沒有辦法爲POST表單添加書籤,因此您不能只點擊一個鏈接並自動登錄 - 除非您以這種方式編寫服務器端邏輯。 – BrianHall 2013-03-19 18:24:28

+0

Rad謝謝。那是缺少的信息! – 2013-03-19 18:25:54

相關問題