HTTP協(xié)議與介紹

什么是HTTP協(xié)議?

  • 協(xié)議是指:計算機通信網絡中兩臺計算機之間進行通信,所必須共同遵守的規(guī)定或規(guī)則,超文本傳輸協(xié)議(HTTP)是一種通信協(xié)議,它允許將超文本標記語言(HTML)文檔從Web服務器傳送到客戶端的瀏覽器

Web服務器,瀏覽器,代理服務器

  • 當我們打開瀏覽器,在地址欄中輸入URL,然后我們就看到了網頁。 原理是怎樣的呢?

實際上我們輸入URL后,我們的瀏覽器給Web服務器發(fā)送了一個Request, Web服務器接到Request后進行處理,生成相應的Response,然后發(fā)送給瀏覽器, 瀏覽器解析Response中的HTML,這樣我們就看到了網頁。

  • Request:
    request這個對象不用事先聲明,就可以在JSP網頁中使用,在編譯為Servlet之后,它會轉換為javax.servlet.http.HttpServletRequest形態(tài)的對象,HttpServletRequest對象是有關于客戶端所發(fā)出的請求的對象,只要是有關于客戶端請求的信息,都可以藉由它來取得,例如請求標頭、請求方法、請求參數、客戶端IP,客戶端瀏覽器等等信息。
    簡單的來說就是:請求方法

代理服務器

  • 代理服務器就是網絡信息的中轉站,有什么功能?
  1. 提高訪問速度, 大多數的代理服務器都有緩存功能。

  2. 突破限制, 也就是FQ了

  3. 隱藏身份


URL詳解

URL(Uniform Resource Locator)地址用于描述一個網絡上的資源, 基本格式如下:

schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]

scheme ---> 指定低層使用的協(xié)議(例如:http, https, ftp)

host ---> HTTP服務器的IP地址或者域名

port# ---> HTTP服務器的默認端口是80,這種情況下端口號可以省略。如果使用了別的端口,必須指明,例如 http://www.cnblogs.com:8080/

path ---> 訪問資源的路徑

query-string ---> 發(fā)送給http服務器的數據

anchor- ---> 錨


URL 的一個例子:

  • 一個常見的連接
    http://www.mywebsite.com/sj/test;id=8079?name=sviergn&x=true#stuff

Schema: 指定低層使用的協(xié)議 ---> 協(xié)議為http

host:HTTP服務器的IP地址或者域名 ---> 域名為www.mywebsite.com

path:訪問資源的路徑 ---> 路徑為/sj/test

URL params: ---> id=8079

Query String: 發(fā)送給http服務器的數據 ---> name=sviergn&x=true

Anchor: 錨 ---> stuff


HTTP協(xié)議是無狀態(tài)的

  • http協(xié)議是無狀態(tài)的,同一個客戶端的這次請求和上次請求是沒有對應關系,對http服務器來說,它并不知道這兩個請求來自同一個客戶端。 為了解決這個問題, Web程序引入了Cookie機制來維護狀態(tài).

HTTP消息的結構

  • 先看Request 消息的結構, Request 消息分為3部分,第一部分叫請求行, 第二部分叫http header, 第三部分是body. headerbody之間有個空行.

Get和Post方法的區(qū)別

  • Http協(xié)議定義了很多與服務器交互的方法,最基本的有4種,分別是GET,POST,PUT,DELETE. 一個URL地址用于描述一個網絡上的資源,而HTTP中的GET, POST, PUT, DELETE就對應著對這個資源的查,改,增,刪4個操作。 我們最常見的就是GETPOST了。GET一般用于獲取/查詢資源信息,而POST一般用于更新資源信息.

  • 區(qū)別:

  1. GET提交的數據會放在URL之后,以?分割URL和傳輸數據,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的數據放在HTTP包的Body中.

  2. GET提交的數據大小有限制(因為瀏覽器對URL的長度有限制),而POST方法提交的數據沒有限制.

  3. GET方式需要使用Request.QueryString來取得變量的值,而POST方式通過Request.Form來獲取變量的值。

  4. GET方式提交數據,會帶來安全問題,比如一個登錄頁面,通過GET方式提交數據時,用戶名和密碼將出現在URL上,如果頁面可以被緩存或者其他人可以訪問這臺機器,就可以從歷史記錄獲得該用戶的賬號和密碼.


狀態(tài)碼

  • Response 消息中的第一行叫做狀態(tài)行,由HTTP協(xié)議版本號, 狀態(tài)碼, 狀態(tài)消息 三部分組成。

狀態(tài)碼用來告訴HTTP客戶端,HTTP服務器是否產生了預期的Response.

  • HTTP/1.1中定義了5類狀態(tài)碼, 狀態(tài)碼由三位數字組成,第一個數字定義了響應的類別

1XX 提示信息 - 表示請求已被成功接收,繼續(xù)處理

2XX 成功 - 表示請求已被成功接收,理解,接受

3XX 重定向 - 要完成請求必須進行更進一步的處理

4XX 客戶端錯誤 - 請求有語法錯誤或請求無法實現

5XX 服務器端錯誤 - 服務器未能實現合法的請求

  • 200 OK:
    表明該請求被成功地完成,所請求的資源發(fā)送回客戶端

  • 302 Found:
    重定向,新的URL會在response中的Location中返回,瀏覽器將會使用新的URL發(fā)出新的Request。

  • 304 Not Modified:
    代表上次的文檔已經被緩存了, 還可以繼續(xù)使用

  • 400 Bad Request:
    客戶端請求與語法錯誤,不能被服務器所理解

  • 403 Forbidden:
    服務器收到請求,但是拒絕提供服務

  • 404 Not Found:
    請求資源不存在(輸錯了URL)

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 深入淺出HTTP協(xié)議(WEB開發(fā)和面試必備) 1.基礎概念篇 a.簡介 HTTP是Hyper Text Trans...
    半世韶華憶闌珊閱讀 1,347評論 0 7
  • 本文整理自MIN飛翔博客 [1] 1. 概念 協(xié)議是指計算機通信網絡中兩臺計算機之間進行通信所必須共同遵守的規(guī)定或...
    HoyaWhite閱讀 2,812評論 2 20
  • http協(xié)議有http0.9,http1.0,http1.1和http2三個版本,但是現在瀏覽器使用的是htt...
    一現_閱讀 2,009評論 0 3
  • (原話)談談對HTTP協(xié)議的理解:超文本傳輸協(xié)議,應用于OSI網絡模型中的應用層,是用于服務器傳輸超文本到本地瀏覽...
    24_yu閱讀 1,023評論 0 1
  • 轉自:https://www.cnblogs.com/ranyonsue/p/5984001.html HTTP簡...
    950545c4cd64閱讀 699評論 0 0

友情鏈接更多精彩內容