亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在HTTPPOST請求中發送參數?

如何在HTTPPOST請求中發送參數?

瀟瀟雨雨 2019-06-03 14:55:05
如何在HTTPPOST請求中發送參數?在HTTP中到達請求時,參數作為查詢字符串:http://example.com/page?parameter=value&also=another在HTTP中崗請求時,參數不會與URI一起發送。價值在哪里?在請求頭中?在請求者體內?它長什么樣?
查看完整描述

4 回答

?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

這些值以內容類型指定的格式在請求正文中發送。

通常內容類型是application/x-www-form-urlencoded,因此請求主體使用與查詢字符串相同的格式:

parameter=value&also=another

在窗體中使用文件上載時,可以使用multipart/form-data相反,編碼具有不同的格式。它更復雜,但你通常不需要關心它是什么樣子,所以我不會給出一個例子,但知道它的存在是好的。


查看完整回答
反對 回復 2019-06-03
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

簡短答覆:在POST請求中,值在請求的“主體”中發送。使用web窗體時,它們最有可能是與以下媒體類型一起發送的:application/x-www-form-urlencodedmultipart/form-data..為處理web請求而設計的編程語言或框架通常對此類請求進行“正確的處理”(?),并為您提供對容易解碼的值的輕松訪問(如$_REQUEST$_POST在PHP中,或cgi.FieldStorage()flask.request.form在Python中)。


現在讓我們離題一點,這可能有助于理解其中的區別;)

.之間的區別GETPOST請求在很大程度上是語義的。它們也被不同地“使用”,這解釋了如何傳遞值的差異。

得到(相關RFC部分)

在執行GET請求時,您向服務器請求一個或一組實體。為了允許客戶端過濾結果,它可以使用URL的所謂“查詢字符串”。查詢字符串是?..這是URI語法.

所以,從您的應用程序代碼的角度來看,接收,您將需要檢查URI查詢部分以獲得對這些值的訪問。

注意,鍵和值是URI的一部分。瀏覽器可以,可能限制URI長度。HTTP標準聲明沒有限制。但在撰寫本文時,大多數瀏覽器限制URI(我沒有特定的值)。GET請求應絕不可能用于向服務器提交新信息。尤其是更大的文件。那是你應該使用的地方POSTPUT.

員額(相關RFC部分)

在執行POST請求時,客戶端實際上提交了一個新的文件遠程主機。所以,查詢字符串(在語義上)沒有意義。這就是為什么您無法在應用程序代碼中訪問它們的原因。

POST有點復雜(而且方式,道路(比較靈活):

當收到POST請求時,您應該總是期望得到一個“有效負載”,或者,用HTTP術語來說:消息體..消息體本身是非常無用的,因為沒有標準(據我所知。也許是應用程序/八位流?)格式。主體格式由Content-Type頭球。使用HTML時FORM元素method="POST",這通常是application/x-www-form-urlencoded..另一種非常常見的類型是多部分/表格-數據如果你使用文件上傳。但可能是什么都行,范圍從text/plain,完畢application/json甚至是一種習俗application/octet-stream.

無論如何,如果POST請求是用Content-Type應用程序無法處理的,則應返回415狀態碼.

大多數編程語言(和/或web-框架)提供了一種方法,可以將消息體從/編碼到最常見的類型(如application/x-www-form-urlencodedmultipart/form-dataapplication/json)。所以這很簡單。自定義類型可能需要更多的工作。

以標準HTML表單編碼文檔為例,應用程序應執行以下步驟:

  1. 閱讀

    Content-Type

    場域
  2. 如果該值不是受支持的媒體類型之一,則使用

    415

    狀態碼
  3. 否則,從消息正文中解碼這些值。

同樣,PHP之類的語言或其他流行語言的web框架可能會為您處理這個問題。這方面的例外是415錯誤。沒有一個框架能夠預測應用程序選擇支持和/或不支持哪些內容類型。這取決于你。

放(相關RFC部分)

PUT請求的處理方式與POST請求。最大的區別是POST請求應該讓服務器決定如何(如果有的話)創建一個新的資源。歷史上(從現在過時的RFC 2616開始,它將創建一個新資源,作為發送請求的URI的“從屬”(子)。

PUT相反,請求應該準確地“存放”資源。在…那個URI一點兒沒錯內容。不多也不差。我們的想法是客戶負責制作完全資源在“投入”之前。服務器應該接受它。原樣在給定的URL上。

因此,POST請求通常不習慣于取代現有的資源。一個PUT請求可以同時創建替換。

旁注

還有“路徑參數“這些數據可以用來向遠程發送額外的數據,但它們非常少見,所以我不會在這里詳細介紹。但是,作為參考,下面是RFC的摘錄:

除了層次化路徑中的點段之外,一般語法認為路徑段是不透明的.URI生成應用程序通常使用段中允許的保留字符來分隔特定于方案或取消引用處理程序的子組件。例如,分號(“;”)和等于(“=”)保留字符通常用于分隔適用于該段的參數和參數值。逗號(“,”)保留字符通常用于類似的目的。例如,一個URI生產者可能使用“name;v=1.1”這樣的段來表示對“name”版本1.1的引用,而另一個URI生產者可能使用“name,1.1”這樣的段來表示相同的內容。參數類型可以由特定于方案的語義定義,但在大多數情況下,參數的語法特定于URI取消引用算法的實現。


查看完整回答
反對 回復 2019-06-03
  • 4 回答
  • 0 關注
  • 2473 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號