真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

好程序員web前端教程JavaScript系列之HTTP

 好程序員 web 前端教程 JavaScript 系列之 HTTP : http   是我們前后臺交互的時候的傳輸協(xié)議(即超文本傳輸協(xié)議)

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的蚌山網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

HTTP 的工作流程

00001.  和服務(wù)器建立鏈接

00002.  建立鏈接后,發(fā)送一個請求給服務(wù)器(請求)

00003.  服務(wù)器接受到請求以后進行相應(yīng)的處理并給出一個回應(yīng)(響應(yīng))

00004.  斷開于服務(wù)器的鏈接

和服務(wù)器建立鏈接

·  怎么和服務(wù)器建立鏈接呢?

·  需要保證客戶端的接受和發(fā)送正常,服務(wù)器端的接受和發(fā)送正常

·  這里就涉及到一個東西叫做  TCP/IP  協(xié)議

·  建立鏈接的主要步驟叫做  三次握手

1、客戶端發(fā)送一個消息給到服務(wù)端

此時: 服務(wù)端知道了 客戶端可以正常發(fā)送消息 服務(wù)端知道了 服務(wù)端可以正常接受消息

2、服務(wù)端回給客戶端一個消息

此時:

  服務(wù)端知道了 客戶端可以正常發(fā)送消息

  服務(wù)端知道了 服務(wù)端可以正常接受消息

  客戶端知道了 客戶端可以正常發(fā)送消息

  客戶端知道了 客戶端可以正常接受消息

  客戶端知道了 服務(wù)端可以正常接受消息

  客戶端知道了 服務(wù)端可以正常發(fā)送消息

3、客戶端再回給服務(wù)端一個消息

此時:

  服務(wù)端知道了 客戶端可以正常發(fā)送消息

  服務(wù)端知道了 服務(wù)端可以正常接受消息

  客戶端知道了 客戶端可以正常發(fā)送消息

  客戶端知道了 客戶端可以正常接受消息

  客戶端知道了 服務(wù)端可以正常接受消息

  客戶端知道了 服務(wù)端可以正常發(fā)送消息

  服務(wù)端知道了 服務(wù)端可以正常發(fā)送消息

  服務(wù)端知道了 客戶端可以正常接受消息

·  至此,依照  TCP/IP  協(xié)議的建立鏈接就建立好了

·  雙方都知道雙方可以正常收發(fā)消息

·  就可以進入到第二步,通訊了

發(fā)送一個請求

·  建立完鏈接以后就是發(fā)送請求的過程

·  我們的每一個請求都要把我們的所有信息都包含請求

·  每一個請求都會有一個  請求報文

·  在  請求報文  中會包含我們所有的請求信息(也就是我們要和服務(wù)端說的話都在里面)

·  我們的請求報文中會包含幾個東西

1、請求行

POST /user HTTP/1.1

# POST 請求方式

# /user 請求URL(不包含域名)

# HTTP/1.1 請求協(xié)議版本

2、請求頭(請求頭都是鍵值對的形式出現(xiàn)的)

user-agent : Mozilla /5 . 0  # 產(chǎn)生請求的瀏覽器信息 accept : application / json  # 表示客戶端希望接受的數(shù)據(jù)類型 Content-Type : application / x-www-form-urlencoded  # 客戶端發(fā)送的實體數(shù)據(jù)格式 Host : 127 . 0 . 0 . 1  # 請求的主機名( IP

3、請求空行(請求頭和請求主體之間要留一個空白行)

# 就是一個空行

4、請求體(本次請求攜帶的數(shù)據(jù))

# GET 請求是沒有請求體數(shù)據(jù)的

# POST 請求才有請求體數(shù)據(jù)

·  接下來看一個完整的請求報文

POST /user HTTP/1.1      # 請求行

Host: www.user.com

Content-Type: application/x-www-form-urlencoded

accept: application/json

User-agent: Mozilla/5.0.     # 以上是首部

#(此處必須有一空行)  # 空行分割header和請求內(nèi)容

name=world   # 請求體

接受一個響應(yīng)

·  客戶端的請求發(fā)送到服務(wù)端以后

·  服務(wù)端進行對應(yīng)的處理

·  會給我們返回一個響應(yīng)

·  每一個響應(yīng)都會有一個  響應(yīng)報文

·  在  響應(yīng)報文  中會包含我們所有的響應(yīng)信息(也就是服務(wù)端在接受到客戶端請求以后,給我們的回信)

·  我們的  響應(yīng)報文  中會包含幾個信息

1、狀態(tài)行

HTTP/1.1 200 OK # HTTP/1.1 服務(wù)器使用的 HTTP 協(xié)議版本 # 200 響應(yīng)狀態(tài)碼 # OK 對響應(yīng)狀態(tài)碼的簡單解釋

2、響應(yīng)頭

Date: Jan, 14 Aug 2019 12:42:30 GMT # 服務(wù)器時間 Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2j PHP/5.4.45 # 服務(wù)器類型 Content-Type: text/html # 服務(wù)端給客戶端的數(shù)據(jù)類型 Content-Length: 11 # 服務(wù)端給客戶端的數(shù)據(jù)長度

3、響應(yīng)體

hello world # 服務(wù)端給客戶端的響應(yīng)數(shù)據(jù)

斷開于服務(wù)端的鏈接

·  之前我們的建立鏈接是基于  TCP/IP  協(xié)議的  三次握手

·  我們的斷開鏈接是基于  TCP/IP  協(xié)議的  四次揮手

00001.  客戶端發(fā)送一個我要斷開的消息給服務(wù)端

00002.  服務(wù)端接受到以后發(fā)送一個消息告訴客戶端我已經(jīng)進入關(guān)閉等待狀態(tài)

00003.  服務(wù)端再次發(fā)送一個消息告訴客戶端,這個是我的最后一次消息給你,當(dāng)我再接受到消息的時候就會關(guān)閉

00004.  客戶端接受到服務(wù)端的消息以后,告訴服務(wù)器,我已經(jīng)關(guān)閉,這個是給你的最后一個消息

完成一個 HTTP 請求

·  至此,一個 HTTP 請求就完整的完成了

·  一個 HTTP 請求必須要包含的四個步驟就是

00001.  建立鏈接

00002.  發(fā)送請求

00003.  接受響應(yīng)

00004.  斷開鏈接

·  在一個 HTTP 請求中,請求的部分有請求報文,接受響應(yīng)的部分有響應(yīng)報文

·  請求報文包含

00001.  請求行

00002.  請求頭

00003.  請求空行

00004.  請求體

·  響應(yīng)報文

00001.  狀態(tài)行

00002.  響應(yīng)頭

00003.  響應(yīng)體

常見的 HTTP 響應(yīng)狀態(tài)碼

·  在一個 HTTP 請求的響應(yīng)報文中的狀態(tài)行會有一個響應(yīng)狀態(tài)碼

·  這個狀態(tài)碼是用來描述本次響應(yīng)的狀態(tài)的

·  通常會出現(xiàn)五種狀態(tài)碼

00001.  100 ~ 199

00002.  200 ~ 299

00003.  300 ~ 399

00004.  400 ~ 499

00005.  500 ~ 599

100 ~ 199

·  一般我們看不到,因為表示請求繼續(xù)

·  100: 繼續(xù)請求,前面的一部分內(nèi)容服務(wù)端已經(jīng)接受到了,正在等待后續(xù)內(nèi)容

·  101: 請求者已經(jīng)準(zhǔn)備切換協(xié)議,服務(wù)器頁表示同意

200 ~ 299

·  2 開頭的都是表示成功,本次請求成功了,只不過不一樣的狀態(tài)碼有不一樣的含義(語義化)

·  200: 標(biāo)準(zhǔn)請求成功(一般表示服務(wù)端提供的是網(wǎng)頁)

·  201: 創(chuàng)建成功(一般是注冊的時候,表示新用戶信息已經(jīng)添加到數(shù)據(jù)庫)

·  203: 表示服務(wù)器已經(jīng)成功處理了請求,但是返回的信息可能來自另一源

·  204: 服務(wù)端已經(jīng)成功處理了請求,但是沒有任何數(shù)據(jù)返回

300 ~ 399

·  3 開頭也是成功的一種,但是一般表示重定向

·  301: 永久重定向

·  302: 臨時重定向

·  304: 使用的是緩存的數(shù)據(jù)

·  305: 使用代理

400 ~ 499

·  4 開頭表示客戶端出現(xiàn)錯誤了

·  400: 請求的語法服務(wù)端不認(rèn)識

·  401: 未授權(quán)(你要登錄的網(wǎng)站需要授權(quán)登錄)

·  403: 服務(wù)器拒絕了你的請求

·  404: 服務(wù)器找不到你請求的 URL

·  407: 你的代理沒有授權(quán)

·  408: 請求超時

·  410: 你請求的數(shù)據(jù)已經(jīng)被服務(wù)端永久刪除

500 ~ 599

·  5 開頭的表示服務(wù)端出現(xiàn)了錯誤

·  500: 服務(wù)器內(nèi)部錯誤

·  503: 服務(wù)器當(dāng)前不可用(過載或者維護)

·  505: 請求的協(xié)議服務(wù)器不支持

常見的 HTTP 請求方式

·  每一個 HTTP 請求在請求行里面會有一個東西叫做請求方式

·  不同的請求方式代表的含義不同

00001.  GET: 一般用于獲取一些信息使用(獲取列表)

00002.  POST: 一般用于發(fā)送一些數(shù)據(jù)給服務(wù)端(登錄)

00003.  PUT: 一般用于發(fā)送一些數(shù)據(jù)給服務(wù)當(dāng)讓其添加新數(shù)據(jù)(注冊)

00004.  DELETE: 一般用域刪除某些數(shù)據(jù)

00005.  HEAD: 類似于 GET 的請求,只不過一般沒有響應(yīng)的具體內(nèi)容,用于獲取報文頭

00006.  CONNECT: HTTP/1.1 中預(yù)留的方式,一般用于管道鏈接改變?yōu)榇淼臅r候使用

00007.  PATCH: 是和 PUT 方式類似的一個方式,一般用于更新局部數(shù)據(jù)

00008.  OPTIONS: 允許客戶端查看服務(wù)端性能

·  我們比較常用的就是 GET 和 POST

GET 請求

·  參數(shù)以  querystring  的形式發(fā)送,也就是直接拼接在 請求路徑的后面

·  GET 請求會被瀏覽器主動緩存

·  GET 請求根據(jù)不同的瀏覽器對長度是有限制的

·  IE: 2083 個字符

·  FireFox: 65536 個字符

·  Safari: 80000 個字符

·  Opera: 190000 個字符

·  Chrome: 8182 個字符

·  APACHE(server): 理論上接受的最大長度是 8192 個字符(有待商榷)

·  對參數(shù)的類型有限制,只接受 ASCII 碼的格式

·  GET 請求是明文發(fā)送,相對不安全

POST 請求

·  參數(shù)以  request body 的形式發(fā)送,也就是放在請求體中

·  POST 請求不會被瀏覽器主動緩存,除非手動設(shè)置

·  POST 請求理論上是沒有限制的,除非服務(wù)端做了限制

·  對參數(shù)類型沒有限制,理論上可以傳遞任意數(shù)據(jù)類型,只不過要和請求頭對應(yīng)

·  POST 請求是密文發(fā)送,相對安全


本文名稱:好程序員web前端教程JavaScript系列之HTTP
網(wǎng)頁路徑:http://weahome.cn/article/jsohih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部