1. 程式人生 > 其它 >狀態碼與COOKIE/SESSION/TOKEN的請求流程

狀態碼與COOKIE/SESSION/TOKEN的請求流程

一、常用的資料格式

1、JOSN

2、表單

3、XML

二、常用狀態碼

常⽤狀態碼 當客戶端向服務端傳送⼀個請求後,服務端響應回覆返回給客戶端,在返回的資訊中會包含⼀個HTTP請求頭的狀 態碼資訊⽤以響應客戶端的請求。在⽹站https://http.cat中可以看⻅各個不同表情的狀態碼的顯示,如調⽤https:/ /http.cat/504就會顯示如下對應的資訊。

常⽤的狀態碼具體為:

1.200 請求成功

 

 

 2.301 永久重定向(請求A的時候,會自動跳轉到B)

我們以 www.360buy.com 和 www.jd.com 實戰為例 當我們在網頁搜尋 www.360buy.com 的時候跳轉出來的是 www.jd.com 的網頁,那麼我們就可以得到 www.360buy.com 是一個301永久重定向的連結

 

 

 3.302 臨時重定項

同樣我我們也以 www.360buy.com 和 www.jd.com 實戰為例 

 

 

 

在日常工作中開發給你一個介面,你測試出來400可能就是以下問題:1、請求頭不對 2、請求引數不對,所以說在工作中如果出現400的狀態碼難麼一定就是客戶端的問題,這時候就要我們仔細檢檢視,是不是請求頭或者請求引數不對。

 

1.400 Bad Request 客戶端請求錯誤

①.請求頭不對

 

 

 ②.請求引數不對

 

 

 2.401 Unauthorized ⽆許可權訪問該系統

 

 3.403 Forbidden 有許可權但是禁⽌訪問

 

 認證(授權): 1、基本 basic 2、常規 digest 3、自定義 4、oauth2.0 (微信)

 

 

 

4.404 請求的資源不存在

 

 5.405 不被允許的請求⽅法

 

 

 

 

 

 

 

500 伺服器內部錯誤

504 GateWay Timeout(閘道器超時,不一定是程式設計師程式碼的問題,也可能是第三方的問題,閘道器的優勢統一API訪問入口,監控API流量)

415:只有請求頭不對

201 created :新增資源成功

204 Not Content :刪除資源成功

特殊場景:

當有一天你的服務IP地址不能用了,後來訪問都是405,這時你可以去找運維問一下是不是引入了安全體系,如果是的話就讓運維把你的IP地址加入進去就可以了。

三、請求頭有很多以下四種一定要記住:

cookie: 反爬蟲 ,認證授權

referer:請求目標地址是從哪裡來的

content-type:代表的是什麼樣的資料格式

user-agent:代表的是訪問目標伺服器,是通過什麼來訪問

四、返回頭

content-type:返回的響應資料是什麼樣的資料格式: JSON XML HTML

Set-cookie:服務端把生成的認證憑證資訊返回給客戶端

HTTP的協議

HTTP是一個無狀態的協議,所以也就導致了COOKIE技術的發展,通過COOKIE能夠記下使用者操作的行為狀態,但是COOKIE它是儲存在客戶端的,所以就不安全,為了解決安全的問題,SESSION誕生,SESSION它是儲存在服務端,相對來說比較安全。後面移動網際網路誕生,就有了TOKNE,TOKNE本質上是SESSION原理來實現的,使他成為一個令牌,TOKEN的實現技術就是JWT的技術,http是網際網路底層的架構。

 

 

1、儲存在客戶端

2、不安全

以登入為案例來說明COOKIE的流程:

1、客戶端輸入賬戶密碼登入成功

2、在服務端生成COOKIE的資訊,通過響應頭中的SET-COOKIE吧生成的COOKIE返回給客戶端

3、客戶端在下次請求的時候,通過請求頭中的cookie吧返回的cookie帶上傳送給服務端,服務端內部進行驗證

 

SESSION請求

 

 

SESSION流程:

1、客戶端輸入賬戶密碼登陸成功

2、在客戶端會生成SESSIONID,同時儲存在服務端本地,通過響應頭中的Set-cookie把生成的SESSIONID返回給客戶端

3、客戶端接收到SESSIONID後

4、客戶端在次請求客戶端(比如訪問個人主頁),會在請求頭上的cookie中帶上SESSIONID傳送給客戶端

5、服務端接收客戶端傳送過來的SESSIONID,與儲存在豐服務端的本地SESSIONID中會進行對比,如果一致,允許訪問個人主頁,如果不一致,就會重定到

TOKEN

TOKEN特點:

1、每次登入成功後,生成的TOKEN都是不一樣的

2、返回的token是一個隨機的字串

持久化:把某些特定的資訊儲存下來(臨時/永久)