首頁 >後端開發 >php教程 >為什麼 POST 不支援 `enctype='text/plain'` 而 GET 支援?

為什麼 POST 不支援 `enctype='text/plain'` 而 GET 支援?

Linda Hamilton
Linda Hamilton原創
2024-12-05 16:24:11419瀏覽

Why Doesn't POST Support `enctype=

method="post" 和enctype="text/plain" 不相容

嘗試使用以下表單時:

<form method="post" enctype="text/plain" action="proc.php">

您在成功將表單資料傳輸到「proc.php」檔案時可能會遇到困難。是什麼導致了這個問題,為什麼「post」方法不能使用「text/plain」編碼,而「get」方法可以使用?

解釋:

PHP 無法使用「post」方法來處理「text/plain」編碼是這個問題的根源(而且這不是一個問題) bug):

https://bugs.php.net/bug.php?id=33741

對於「

」中的「enctype」屬性標籤,下列有效值為:
  • application/x-www-form-urlencoded
  • multipart/form-data

第一個值為默認,第二個僅用於檔案上傳。

PHP 的原因行為:

Alohci 解釋了為什麼PHP 不填充$_POST 數組,而是將值儲存在$HTTP_RAW_POST_DATA 變數中:

GET 和POST之間的區別:

GET:變數包含在 URL 中作為查詢字串並且必須進行 URL 編碼。即使使用“enctype=text/plain”,瀏覽器也會對變數進行 URL 編碼。
  • POST:變數不是 URL 的一部分,而是作為 HTTP 請求 (POSTDATA) 中的最後一個標頭發送。您可以指定是否將它們傳送為“text/plain”或“application/x-www-form-urlencoded”,但後者是消除歧義的唯一選項。

以上是為什麼 POST 不支援 `enctype='text/plain'` 而 GET 支援?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn