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