http請求四種常見的POST提交數據方式


http請求常見的content-type分為4種:application/json、x-www-form-urlencoded、multipart/form-data、text/plain。

enctype屬性規定在發送到服務器之前應該如何對表單數據進行編碼。默認地,表單數據會編碼為“application/x-www-form-urlencoded"。就是說,在發送到服務器之前,所有字符都會進行編碼(空格轉換為”+“加號,特殊符號轉換為ASCII HEX值)。

enctye可選項如下:

1 概述

HTTP/1.1 協議規定的HTTP請求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT這幾種。其中POST一般用來向服務端提交數據,本文主要討論POST提交數據的幾種方式。

HTTP協議是以ASCII碼傳輸。他是建立在TCP/IP協議之上的應用層規范,規定HTTP請求分為三個部分:

。狀態行

。headers請求頭

。entity-body消息主體

類似於下面這樣:

HTTP協議規定POST提交的數據必須放在消息主體(entity-body)中,但並沒有規定數據必須使用什么編碼方式。實際上,開發者完全可以自己決定消息主體的格式,只要最后發送的HTTP請求滿足上面的格式就可以。

單數,數據發送出去,還要服務端解析成功才有意義。一般服務端語言如php、python等,以及他們的framework,都內置了自動解析常見數據格式的功能。服務端通常是根據請求頭(headers)中的Content-Type字段來獲知請求中的消息主體是用何種方式編碼,再對主體進行解析。所以POST提交數據包含了Content-Type和消息主體編碼方式兩部分,下面就正式開始介紹它們。

2、簡介

1)application/x-www-form-urlencoded

HTTP中默認的提交數據的方式。瀏覽器的原生<form>表單,如果不設置enctype屬性,那么最終就會以application/x-www-form-urlencoded方式提交數據。請求類似於下面這樣:

通過抓包結果我們能得到以下結論: 。Content-Type被指定為application/x-www-form-urlencoded 。提交的數據按照key1=val1&key2=val2的方式進行編碼,key和val都進行了URL轉碼。大部分服務端語言都對這種方式有很好的支持。

2)multipart/form-data

一個常見的POST數據提交的方式。我們使用表單上傳文件時,必須將enctype設為multipart/form-data。

3)application/json

application/json作為請求頭,用來告訴服務端消息主體是序列化的JSON字符串。方便提交復雜的結構化數據,特別適合RESTFul接口。最終發送的請求類似下面這樣:
各大抓包工具如Chrome自帶的開發者工具、Firebug、Fiddler,都會以樹形結構展示JSON數據,非常友好。最終發送的請求的是:

4)text/xml

XML-RPC(XML Remote Procdure Call)。它是一種使用HTTP作為傳輸協議,XML作為編碼方式的遠程調用規范。典型的XML-RPC請求是這樣的:
XML-RPC協議簡單、功能夠用,各種語言的實現都有。它的使用也很廣泛,如 搜索引擎的ping服務等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM