2012-11-17 61 views
1

有人能向我解釋什麼是真正的以URL編碼的HTTP請求的主體部分發送 數據需要使用HTTP請求的URL編碼,機身

 content-type: application/x-www-form-urlencoded 

感謝

回答

1

通過「時需要「,你的意思是」目的「嗎?

如果你在紫色之後 - 它只是告訴服務器期望什麼:URL編碼鍵=值對。它也允許服務器知道什麼是而不是即將到來 - 類似於multipart/form-data! 這允許服務器明確地知道如何讀取傳入數據。

數據作爲一個頭發送(這也是爲什麼它有一個大小限制)。因此,你一定要避免像:換行符,冒號。除此之外,你肯定希望在數據中逃避=,這樣就不會混淆key = value結構。出於同樣的原因,您也想逃離&。 URL編碼完成所有這些工作 - 所以只有設計HTTP協議的人才能做到這一點!

+0

我可以理解爲什麼最終URL連接到它必須是URL編碼,但發佈的數據意味着數據被髮送的郵件的正文部分的查詢字符串,那麼爲什麼URL編碼呢?。 – GionJh

+0

數據作爲一個報頭髮送(這也是爲什麼它有一個大小限制)。因此,你一定要避免像:換行符,冒號。除此之外,你肯定希望在數據中逃避=,這樣就不會混淆key = value結構。出於同樣的原因,您也想逃跑。 URL編碼完成所有這些工作 - 所以只有設計HTTP協議的人才能做到這一點! –

+0

@ user1800246 - 您應該編輯您的答案以在上面包含您的評論。 – toofast1227

0

在POST請求中有多種方式將數據發送到服務器; URL編碼數據只是幾種可能的格式之一。

客戶端和服務器必須同意POST主體中的數據格式。由於其通用支持,URL表單編碼數據最容易使用。瀏覽器本身支持它。每種編程語言都允許您使用熟悉的語法讀取url編碼的post參數。

但是,當然,沒有必要使用url編碼格式。您可以輕鬆地發送json或xml編碼的POST正文。只要客戶端和服務器保持同步,您甚至可以創建完全不同的編碼並使用它。

+0

我明白,但我不知道爲什麼它是使用URL編碼,而我們真正需要編碼的字符只有編碼種類繁多的字符「=」和' &'。 – GionJh