日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

聊聊 HTTP 常见的请求方式

發(fā)布時(shí)間:2024/4/11 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 聊聊 HTTP 常见的请求方式 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在互聯(lián)網(wǎng)已經(jīng)滲透了生產(chǎn)、生活各個(gè)角落的今天,人們可以登錄微信語音聊天,可以隨手“掃”到各種功能的二維碼,可以通過方便快捷的無人超市購物……這種互聯(lián)網(wǎng)領(lǐng)域的跨越式發(fā)展,不僅滿足了人們生活中各種各樣的需求,也催生了一個(gè)個(gè)新興領(lǐng)域的誕生,為經(jīng)濟(jì)增長注入了強(qiáng)勁動(dòng)力。

上網(wǎng)的過程,其實(shí)是瀏覽器向服務(wù)端發(fā)送請求,之后將服務(wù)端主機(jī)上的內(nèi)容顯示到本地的一個(gè)流程。而瀏覽器與服務(wù)器之間的請求走的就是 HTTP 協(xié)議。

自 1990 年以來,超文本傳輸協(xié)議(HTTP) 就成為了互聯(lián)網(wǎng)數(shù)據(jù)通信的基礎(chǔ),它是分布式協(xié)作超媒體信息系統(tǒng)的應(yīng)用層協(xié)議,是一種通用的無狀態(tài)協(xié)議。具體來講就是讓服務(wù)器不保留與客戶交易時(shí)的任何狀態(tài),由客戶端單方面向服務(wù)器發(fā)送請求數(shù)據(jù)。

HTTP 主要有 0.9、1.0、1.1、2.0 版本,其中 1.1 版本定義了 9 種 Method(方法),分別是:

這些方法中,最常見的便是 GET 和 POST,但是可能很少有人關(guān)注兩者都有什么作用,我們一起來看一看吧。

GET vs POST Method

GET 和 POST 都是 HTTP 協(xié)定的一種請求標(biāo)準(zhǔn),同樣基于 TCP 傳輸層協(xié)議。兩者主要區(qū)別在存放數(shù)據(jù)的方式不同,進(jìn)而造成的傳輸量、安全性等差異。

GET

我們先來看一下 GET 是怎么傳送信息的:

<form method="get" action=""> <input type="text" name="id" /> <input type="submit" /> </form>

如上完成代碼點(diǎn)擊“提交”之后,瀏覽器的網(wǎng)址就會(huì)變成 http://www.a.com/a.html?id=11111,瀏覽器會(huì)自動(dòng)將表單內(nèi)容轉(zhuǎn)為 Query String 加在 URL 后面進(jìn)行請求。這樣,從瀏覽器的網(wǎng)址里就可以看見表單要傳送的資料。

POST

接下來我們看看 POST 的傳送:

<form method="post" action=""> <input type="text" name="id" /> <input type="submit" /> </form>

提交之后,地址并無變化,但是通過查看 HTTP Request 的內(nèi)容可以發(fā)現(xiàn),POST 是將表單資料放在 Message Body 進(jìn)行傳送。

看不太懂代碼的小伙伴也不要著急,我們以現(xiàn)實(shí)生活中寄信的機(jī)制來舉例。如果說信封的撰寫格式是 HTTP,我們可以將信封外的內(nèi)容稱為 Http-Header,信封內(nèi)的書信稱為 Message Body。 HTTP Method 就是你要告訴郵差的寄信規(guī)則。

而假設(shè) GET 就如同明信片一樣將要傳遞的信息寫在信封(Http-Header)上,是信封內(nèi)不裝信件的寄送方式,是直接將要傳送的信息以 Query String(一種 Key/Vaule 的編碼方式)的形式加在地址(URL)后面進(jìn)行傳送。那 POST 就是信封內(nèi)裝有信件的寄送方式,不但信封可以寫東西,信封內(nèi)(Message Body)還可以放入你想要寄送的其他資料,之后由郵差進(jìn)行傳送。

GET VS POST

總體來說,兩種請求方式有如下區(qū)別:

**- 傳遞參數(shù)方式:**GET 是將參數(shù)寫在 URL 中 ? 的后面,并用 & 分隔不同參數(shù);而 POST 是將信息存放在 Message Body 中傳送。

**- 傳輸資料量限制:**HTTP 協(xié)定本身沒有限制 URL 及正文長度,多半是瀏覽器為了避免過長的 URL 消耗過多的資源而限制長度;而以 POST 請求通常都沒有內(nèi)容長度限制的問題。

**- 安全性問題:**GET 請求方式從瀏覽器的 URL 地址就可以看到參數(shù);但無論是 GET 還是 POST 其實(shí)都是不安全的,因?yàn)?HTTP 協(xié)定是明文傳輸,只要攔截封包便能輕易獲取重要資訊。想要安全傳輸資料,必須使用 SSL/TLS來加密封包,也就是 HTTPS。

除了我們較為常見的 GET 和 POST 兩種請求方式,現(xiàn)在其他請求方式也越來越多的被使用。例如又拍云基于 RESTful 架構(gòu)的 REST API 中,除了使用 GET 獲取文件外,也會(huì)使用 PUT 來上傳文件,DELETE 用來刪除文件,HEAD 用來獲取文件信息,使用 PATCH 來修改文件 Metadata 信息等等。

請求與狀態(tài)碼

當(dāng)然,上面講的請求方式雖然很常見,但是如果不是稍微有些了解或者對互聯(lián)網(wǎng)有些關(guān)注的小伙伴,可能并不會(huì)注意到。但是我們接下來說的肯定是大家都有見過的。畢竟在我們使用網(wǎng)頁瀏覽內(nèi)容的過程中肯定,有見到過例如:404 NOT FOUND、504 TIME OUT,這類的提示。其實(shí)這個(gè)是 HTTP 的狀態(tài)碼。

HTTP 狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制數(shù)字定義了狀態(tài)碼的類型,后兩位不具有任何分類作用。當(dāng)用戶訪問一個(gè)網(wǎng)頁時(shí),用戶的瀏覽器會(huì)向網(wǎng)頁所在服務(wù)器發(fā)出請求。在瀏覽器接收并顯示網(wǎng)頁前,此網(wǎng)頁所在的服務(wù)器會(huì)返回一個(gè)包含 HTTP 狀態(tài)碼的信息頭(Header)用以響應(yīng)瀏覽器的請求。而這個(gè)狀態(tài)碼則可以幫助我們粗略的判斷請求結(jié)果或錯(cuò)誤原因。

HTTP 狀態(tài)碼共分為 5 種類型:

一直在使用又拍云 CDN 的小伙伴兒對一些常見的狀態(tài)碼肯定很熟悉。比如,網(wǎng)站訪問成功請求會(huì)返回 200;開啟了強(qiáng)制 HTTPS,會(huì)返回 301;如果開啟了防盜鏈被攔截,則是返回 403 等等。

在這些常規(guī)的狀態(tài)碼下,又拍云還進(jìn)行了進(jìn)一步的封裝,讓我們可以通過查詢又拍云錯(cuò)誤碼表的方式獲得更為準(zhǔn)確的網(wǎng)站報(bào)錯(cuò)原因。

{“code”:“40310013”,“msg”:“invalid user token.”}

查詢錯(cuò)誤碼表得知,觸發(fā)了 Token 防盜鏈規(guī)

講了這么多,是不是對 HTTP 請求有了更近一步的了解?當(dāng)然了,HTTP 協(xié)議不僅僅于此,有興趣的小伙伴兒們要持續(xù)關(guān)注哦~

總結(jié)

以上是生活随笔為你收集整理的聊聊 HTTP 常见的请求方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。