9 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個贊
你首先要知道 Cookie
是怎樣產(chǎn)生的, 如我們第一次通過瀏覽器訪問一個web服務(wù),在服務(wù)端會產(chǎn)生一個會話信息 Session
, 該服務(wù)器響應(yīng)你的請求時會將該會話信息的 session_id
以 cookie 寫入到你的瀏覽器,下次訪問時,會帶著這個cookie信息進(jìn)行會話驗(yàn)證;
而 APP 的接口是沒有通過瀏覽器訪問的,所以也就在服務(wù)器端不會生成session,在客戶端也不會寫入cookie,那么也就拿不到會話信息,所以,為了能夠像瀏覽器那樣記住同一客戶的信息,Token
就誕生了, 用戶每次訪問服務(wù)端時,會帶著這個Token,而服務(wù)端通過這個Token拿到用戶的相關(guān)信息,然后再處理。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個贊
我覺得的吧,這個是需要看具體的應(yīng)用場景的。(無狀態(tài)api=>restful)
引用知乎上某大神的說法,restful使用場景是Machine-to-machine的系統(tǒng)集成,目標(biāo)是讓服務(wù)發(fā)布者和消費(fèi)者在最小約束下自由演化。
這個約束是指服務(wù)契約,簡單講就是服務(wù)輸入輸出的語義。消費(fèi)者只需知道服務(wù)的根資源的URI,就可以由根資源引導(dǎo)到所需的資源。換句話說,消費(fèi)者和發(fā)布者的耦合只在于根資源的URI以及各資源及其操作的語義。這樣做的好處如下:
1.服務(wù)自解釋
2.降低服務(wù)的版本粒度
3.降低消費(fèi)者對服務(wù)內(nèi)部實(shí)現(xiàn)細(xì)節(jié)的耦合,不需要考慮上下文,以及當(dāng)前狀態(tài),極大的降低了耦合。
4.restful基于http,本身提供了豐富的內(nèi)容協(xié)商手段,無論是緩存,還是資源修改的樂觀并發(fā)控制。都可以以業(yè)務(wù)無關(guān)的中間件來實(shí)現(xiàn)。
而采用cookie,則是為了記錄某種狀態(tài),用來實(shí)現(xiàn)上下文貫通,記錄訪問者狀態(tài)的手段。保存在客戶端的cookie確實(shí)容易被盜取,但是通過一些加密等安全手段也是可以增強(qiáng)安全性。

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個贊
Cookie
是Http
協(xié)議的補(bǔ)充部分,主要是為了解決標(biāo)記用戶狀態(tài)的問題(比如登錄狀態(tài),通常用于MVC
程序中),但HTTP
接口通常應(yīng)設(shè)計成無狀態(tài)的,以方便擴(kuò)展,所以不應(yīng)該使用Cookie
,沒有必要也不安全。

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超8個贊
我覺得吧,api的安全性更重要些。
瀏覽器的cookie可以自動處理一些東西,比如關(guān)了瀏覽器會話cookie就過期,可以從一定程度上確保會話的安全性。但是api請求的話你不知道他啥時候會“關(guān)瀏覽器”,而且涉及到一些金額變更什么的接口,如果一直用cookie的話可能會存在安全隱患。api可以設(shè)計成每次都帶上不同的token,即使是同個接口同樣參數(shù),也是可以加上時間參數(shù)確保同樣的token不能無限使用的。

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊
因?yàn)?接口可以在其他地方使用,不只是瀏覽器 比如 手機(jī)app端,那樣的話就無法保證他的狀態(tài)了(但現(xiàn)在大部分app有封裝支持cookie的),所以說通信的時候要帶一個token來做用戶認(rèn)證。?

TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個贊
大部分http請求都是不需要保存用戶狀態(tài)的,比如我們?yōu)g覽web頁面,大多數(shù)時候你也不會想要去登錄。但也有很多情況我們需要保存用戶狀態(tài)。所以Cookie和Session誕生了!

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個贊
“無狀態(tài)”指是 HTTP 協(xié)議,它是一個請求,一個響應(yīng),就結(jié)束了。而多個請求之間是否存在關(guān)系,這是你利用 HTTP 實(shí)現(xiàn)你的業(yè)務(wù)邏輯的事,是否有狀態(tài),也是你自己怎么實(shí)現(xiàn)的事。絕大部分在這個層面都不是“無狀態(tài)”的。
更多地,你自己去了解一些其它的非 HTTP 的應(yīng)用層協(xié)議,自然就明白了。
- 9 回答
- 0 關(guān)注
- 728 瀏覽
添加回答
舉報