http post请求 参数放在路径后面 java_「思唯网络学院」网络基本概念之HTTP协议...
HTTP基本概念
HTTP,全稱為 HyperText Transfer Protocol,即為超文本傳輸協(xié)議。是互聯(lián)網(wǎng)應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,所有的 www 文件都必須遵守這個(gè)標(biāo)準(zhǔn)。 HTTP 特性: HTTP 是無(wú)連接無(wú)狀態(tài)的 HTTP 一般構(gòu)建于 TCP/IP 協(xié)議之上,默認(rèn)端口號(hào)是 80 HTTP 可以分為兩個(gè)部分,即請(qǐng)求和響應(yīng)。 HTTP 請(qǐng)求: HTTP 定義了在與服務(wù)器交互的不同方式,最常用的方法有 4 種,分別是 GET,POST,PUT, DELETE。URL 全稱為資源描述符,可以這么認(rèn)為:一個(gè) URL 地址,對(duì)應(yīng)著一個(gè)網(wǎng)絡(luò)上的資源,而 HTTP 中的 GET,POST,PUT,DELETE 就對(duì)應(yīng)著對(duì)這個(gè)資源的查詢,修改,增添,刪除4個(gè)操作。 HTTP 請(qǐng)求由 3 個(gè)部分構(gòu)成,分別是:狀態(tài)行,請(qǐng)求頭(Request Header),請(qǐng)求正文。 GET 請(qǐng)求報(bào)文實(shí)例:
狀態(tài)行由請(qǐng)求方式,路徑、協(xié)議等構(gòu)成,各元素之間以空格分隔。對(duì)應(yīng)到圖中即為 GET、/books/?sex=man&name=Professional、 HTTP/1.1 請(qǐng)求頭提供一些參數(shù)比如:Cookie,用戶代理信息,主機(jī)名等等。(圖中即從第二行到最后一行) 請(qǐng)求正文就放一些發(fā)送的數(shù)據(jù),一般 GET 請(qǐng)求會(huì)將參數(shù)放在 URL 中,也就是在請(qǐng)求頭中而請(qǐng)求正文一般為空,而 POST 請(qǐng)求將參數(shù)放在請(qǐng)求正文中。請(qǐng)求正文可以傳一些 json 數(shù)據(jù)或者字符串等等。 GET 一般用于信息獲取,比如剛才我們?yōu)g覽百度首頁(yè),其使用的就是GET方法。 GET 請(qǐng)求一般不會(huì)產(chǎn)生副作用,它僅僅只是獲取資源信息,就像數(shù)據(jù)庫(kù)查詢一樣,不會(huì)修改、增加數(shù)據(jù),不會(huì)影響資源的狀態(tài),并且對(duì)同一個(gè) URL 的多次GET請(qǐng)求應(yīng)該返回相同的結(jié)果。 而 POST 請(qǐng)求表示可能會(huì)修改服務(wù)器上的資源。
GET 請(qǐng)求和 POST 請(qǐng)求的區(qū)別: GET 和 POST 請(qǐng)求參數(shù)位置不同,從上面兩個(gè)請(qǐng)求報(bào)文可以看出,GET 請(qǐng)求對(duì)應(yīng)的參數(shù)放在 URL 中,而 POST 請(qǐng)求對(duì)應(yīng)的參數(shù)放在 HTTP 請(qǐng)求主體中。(但是這只是一種約定,GET 請(qǐng)求中出現(xiàn) Body 也是被允許的) 雖然 HTTP 協(xié)議的 RFC規(guī)范 并沒(méi)有詳細(xì)規(guī)定 URL 的最大字符長(zhǎng)度限制,但實(shí)際上,在瀏覽器或者服務(wù)器中總會(huì)存在限制的,這就導(dǎo)致了 GET 請(qǐng)求中參數(shù)數(shù)量是有限的。 處于安全考慮,在一些涉及安全的請(qǐng)求比如:登錄請(qǐng)求需要用 POST 提交表單,而GET 請(qǐng)求一般用來(lái)獲取靜態(tài)資源。 GET 請(qǐng)求可以被緩存,可以被收藏為書(shū)簽,但 POST 可以被緩存,但不能被收藏為書(shū)簽。 GET 請(qǐng)求的參數(shù)在 URL 中,因此絕不能用 GET 請(qǐng)求傳輸敏感數(shù)據(jù)。POST 請(qǐng)求數(shù)據(jù)則寫(xiě)在 HTTP 的請(qǐng)求頭中,安全性略高于 GET 請(qǐng)求。
HTTP響應(yīng)
HTTP 響應(yīng)是服務(wù)器在客戶端發(fā)送 HTTP 請(qǐng)求后經(jīng)過(guò)一些處理而做出的響應(yīng),HTTP 響應(yīng)和 HTTP 請(qǐng)求相似,也是由三個(gè)部分構(gòu)成。分別是:狀態(tài)行,響應(yīng)頭(Response Header),響應(yīng)正文。 下面是一個(gè) HTTP 響應(yīng)的例子:
HTTP 響應(yīng)中包含一個(gè)狀態(tài)碼,用來(lái)表示服務(wù)器對(duì)客戶端響應(yīng)的結(jié)果。
狀態(tài)碼一般由3位構(gòu)成:
- 1xx : 表示請(qǐng)求已經(jīng)接受了,繼續(xù)處理。
- 2xx : 表示請(qǐng)求已經(jīng)處理掉了。
- 3xx : 重定向。
- 4xx : 一般表示客戶端有錯(cuò)誤,請(qǐng)求無(wú)法實(shí)現(xiàn)。
- 5xx : 一般為服務(wù)器端的錯(cuò)誤。
比如常見(jiàn)的狀態(tài)碼:
- 200 OK 客戶端請(qǐng)求成功。
- 301 Moved Permanently 請(qǐng)求永久重定向。
- 302 Moved Temporarily 請(qǐng)求臨時(shí)重定向。
- 304 Not Modified 文件未修改,可以直接使用緩存的文件。
- 400 Bad Request 由于客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解。
- 401 Unauthorized 請(qǐng)求未經(jīng)授權(quán),無(wú)法訪問(wèn)。
- 403 Forbidden 服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)。服務(wù)器通常會(huì)在響應(yīng)正文中給出不提供服務(wù)的原因。
- 404 Not Found 請(qǐng)求的資源不存在,比如輸入了錯(cuò)誤的URL。
- 500 Internal Server Error 服務(wù)器發(fā)生不可預(yù)期的錯(cuò)誤,導(dǎo)致無(wú)法完成客戶端的請(qǐng)求。
- 503 Service Unavailable 服務(wù)器當(dāng)前不能夠處理客戶端的請(qǐng)求,在一段時(shí)間之后,服務(wù)器可能會(huì)恢復(fù)正常。
知道了 HTTP 請(qǐng)求和響應(yīng)后,一個(gè)完整的流程一般是這樣的:
通常,由 HTTP 客戶端發(fā)起一個(gè)請(qǐng)求,建立一個(gè)到服務(wù)器指定端口(默認(rèn)是 80 端口)的 TCP 連接。HTTP 服務(wù)器則在那個(gè)端口監(jiān)聽(tīng)客戶端發(fā)送過(guò)來(lái)的請(qǐng)求。一旦收到請(qǐng)求,服務(wù)器(向客戶端)發(fā)回一個(gè)狀態(tài)行,比如"HTTP/1.1 200 OK",和(響應(yīng)的)消息,消息的消息體可能是請(qǐng)求的文件、錯(cuò)誤消息、或者其它一些信息。
HTTP頭信息
HTTP 請(qǐng)求頭:
比如以請(qǐng)求百度首頁(yè)為例:
Accept:指定客戶端能夠接收的內(nèi)容類型,如常見(jiàn)的 text/html 等,最后返回的百度首頁(yè)也是個(gè) HTML 文件。
Accept-Encoding:表示瀏覽器有能力解碼的編碼類型。
- Accept-Language:表示瀏覽器所支持的語(yǔ)言類型。(這里指中文、簡(jiǎn)體中文和英文)
- Cache-Control:指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。(這里表示不需要緩存)
- Connection:表示是否需要持久連接。(HTTP 1.1 默認(rèn)進(jìn)行持久連接即為 keep-alive, HTTP 1.0 則默認(rèn)為 close)
- Cookie:用于會(huì)話追蹤,在本文后面就繼續(xù)介紹。
- Host:表示請(qǐng)求的服務(wù)器網(wǎng)址
- User-Agent:用戶代理,簡(jiǎn)稱 UA,它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識(shí)別客戶端使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語(yǔ)言、瀏覽器插件等。
還有另外還有一些常見(jiàn)的請(qǐng)求頭:
- Content-Length: 請(qǐng)求的內(nèi)容長(zhǎng)度
- Referer: 先前訪問(wèn)的網(wǎng)頁(yè)的地址,當(dāng)前請(qǐng)求網(wǎng)頁(yè)緊隨其后,說(shuō)明你是先前是從哪個(gè)網(wǎng)址點(diǎn)擊訪問(wèn)到該頁(yè)面的,如果沒(méi)有則不填。
- Content-Type:內(nèi)容的類型,GET 請(qǐng)求無(wú)該字段,POST 請(qǐng)求中常見(jiàn)的有 application/x-www-form-urlencoded 為普通的表單提交,還有文件上傳為 multipart/form-data
總結(jié)
以上是生活随笔為你收集整理的http post请求 参数放在路径后面 java_「思唯网络学院」网络基本概念之HTTP协议...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 二维非稳态导热微分方程_室内湿度影响验证
- 下一篇: ptaa乘以b_《C语言程序设计》实验作