W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在HTML中,表單是在 ?<form>...</form>
?中的一些元素,它允許訪客做一些類似輸入文本、選擇選項、操作對象或空間等動作,然后發(fā)送這些信息到服務(wù)端。
一些表單界面元素(文本框或復(fù)選框)內(nèi)置在HTML中。其他會更復(fù)雜些;像彈出日期選擇或者允許您移動滑塊或者操作控件,一般通過使用JavaScript,CSS以及HTML表單中的
?<input>
?元素來實現(xiàn)這些效果。
和元素?<input>
?一樣,表單必須指定兩樣?xùn)|西:
where
?:對應(yīng)于用戶輸入的數(shù)據(jù)應(yīng)該返回到的URLhow
?:應(yīng)該返回數(shù)據(jù)的 HTTP 方法例如,Django admin的登錄表單包含了一些 ?<input>
? 元素:用戶名用 ?type="text"
? ,密碼用 ?type="password"
? ,登錄按鈕用 ?type="submit"
? 。它還包含一些用戶看不到的隱藏文本字段,Django用它們來決定下一步行為。
它還告訴瀏覽器表單數(shù)據(jù)應(yīng)該發(fā)往 ?<form>
? 的 ?action
?屬性指定的URL—— ?/admin/
?,并且應(yīng)該使用它的 ?method
?屬性指定的HTTP方法—— ?post
?。
當(dāng) ?<input type="submit" value="Log in">
? 元素被觸發(fā)的時候,數(shù)據(jù)會發(fā)送到 ?/admin/
? 。
處理表單時只會用到 ?GET
?和 ?POST
?兩種HTTP方法。
Django的登錄表單使用 ?POST
?方法傳輸數(shù)據(jù),在這個方法中瀏覽器會封裝表單數(shù)據(jù),為了傳輸會進(jìn)行編碼,然后發(fā)送到服務(wù)端并接收它的響應(yīng)。
相比之下,?GET
?方法將提交的數(shù)據(jù)捆綁到一個字符串中,并用它來組成一個URL。該URL包含了數(shù)據(jù)要發(fā)送的地址以及一些鍵值對應(yīng)的數(shù)據(jù)。
?GET
?和 ?POST
?通常用于不同的目的。
任何可能用于更改系統(tǒng)狀態(tài)的請求應(yīng)該使用 ?POST
?—— 比如一個更改數(shù)據(jù)庫的請求。?GET
?應(yīng)該只被用于不會影響系統(tǒng)狀態(tài)的請求。
?GET
?也不適合密碼表格,因為密碼會出現(xiàn)在 URL 中,因此也會出現(xiàn)在瀏覽器歷史和服務(wù)器日志中,都是純文本。它也不適合于大量的數(shù)據(jù),或二進(jìn)制數(shù)據(jù),如圖像。一個使用 ?GET
?請求管理表單的網(wǎng)絡(luò)應(yīng)用程序是一個安全風(fēng)險:攻擊者很容易模仿表單的請求來獲得對系統(tǒng)敏感部分的訪問。?POST
?,加上其他保護(hù)措施,如 Django 的 CSRF 保護(hù),可以對訪問進(jìn)行更多控制。
另一方面, ?GET
?方法適用于諸如網(wǎng)頁搜索表單這樣的內(nèi)容,因為這類呈現(xiàn)為一個 ?GET
?請求的URL很容易被存為書簽、分享或重新提交。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: