摘要:可選項部分只會在瀏覽器端使用,而不會被發(fā)送至服務器端。包括過期時間選項,過期時間選項過期時間,指定了何時不會再被發(fā)送至服務器,隨后瀏覽器將刪除該。
瀏覽器和Webserver之間的關(guān)系,被設計為無狀態(tài)的,這是一個很重要的設計,可以讓客戶端無需和服務器保持狀態(tài),節(jié)省寶貴的端口資源,從而可以為更多的客戶鏈接服務。
但是這樣帶來了問題,簡言之,服務器無法知道兩個請求是否來自于同一個瀏覽器。然而,在頁面訪問計數(shù),購物車等應用中,服務器是需要區(qū)分不同的瀏覽器的,比如客戶瀏覽器1放置到購物車內(nèi)的商品,和客戶2瀏覽器的不可以混雜在一起。
辦法是有的。比如在請求的頁面中插入一個 token,然后在下次請求時將這個 token 返回至服務器。可以把token放到form內(nèi)或者URL參數(shù)內(nèi)。
但是被廣為接受的是Cookie方法。cookie就是根據(jù)服務器響應頭的指示,瀏覽器保存的一段文本。并在隨后的請求中將這些信息發(fā)送至Web服務器,Web服務器就可以使用這些信息來識別不同的用戶。
具體做法就是:
服務器可以為來訪的瀏覽器設置一個值,這個通過response內(nèi)的Set-Cookie來實現(xiàn)
瀏覽器記住這個值,并且每次訪問服務器時,發(fā)送此值過來。可以從request內(nèi)的Cookie值承載
演示如下代碼使用express.js,演示了一個訪問計數(shù)的服務:
const express = require("express") const app = express() app.get("/", (req, res) => { var count = req.header("Cookie") if (!count){ count = 0 } count = parseInt(count) + 1 res.setHeader("Set-Cookie",count) res.send("Your Visit page count:" + count) }) app.get("/reset", (req, res) => { res.setHeader("Set-Cookie",0) res.send("Your Visit page count:" + 0) }) app.listen(3000, () => console.log("Example app listening on port 3000!"))
可以打開瀏覽器,比如chrome,訪問localhost:3000,每次刷新,可以看到:
Your Visit page count:0
的數(shù)字加1。
可以再打開另外一個和chrome不同的瀏覽器,比如safari,訪問localhost:3000,每次刷新,可以看到:
Your Visit page count:0
的數(shù)字加1。這兩個加1的動作,兩個瀏覽器各自加各自的,互相并不影響。
創(chuàng)建 cookie通過發(fā)送一個稱為Set-Cookie的HTTP 消息頭來創(chuàng)建一個 cookie,格式如下:
Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]
消息頭的第一部分,value 部分,可以是任意字符串。但是通常是一個name=value格式的字符串。
可選項部分只會在瀏覽器端使用,而不會被發(fā)送至服務器端。包括過期時間選項,
過期時間選項過期時間(expires),指定了 cookie 何時不會再被發(fā)送至服務器,隨后瀏覽器將刪除該 cookie。該選項的值是一個 Wdy, DD-Mon-YYYY HH:MM:SS GMT 日期格式的值
expires=Sat, 02 May 2009 23:38:25 GMT
如果 expires 設置了一個過去的時間點,那么這個 cookie 會被立即刪掉。沒有設置 expires 選項時,cookie 的生命周期僅限于當前會話中,關(guān)閉瀏覽器意味著這次會話的結(jié)束,
domain 選項指定了 cookie 將要被發(fā)送至哪個或哪些域中。默認情況下,domain 會被設置為創(chuàng)建該 cookie 的頁面所在的域名,所以當給相同域名發(fā)送請求時該 cookie 會被發(fā)送至服務器。例如,本博中 cookie 的默認值將是 bubkoo.com。domain 選項可用來擴充 cookie 可發(fā)送域的數(shù)量,Yahoo! 這種大型網(wǎng)站,都會有許多 *.yahoo.com 形式的站點(例如:my.yahoo.com, finance.yahoo.com 等等)。將一個 cookie 的 domain 選項設置為 yahoo.com,就可以將該 cookie 的值發(fā)送至所有這些站點。
path 選項另一個控制 Cookie 消息頭發(fā)送時機的選項是 path 選項,和 domain 選項類似,path 選項指定了請求的資源 URL 中必須存在指定的路徑時,才會發(fā)送Cookie 消息頭。這個比較通常是將 path 選項的值與請求的 URL 從頭開始逐字符比較完成的。如果字符匹配,則發(fā)送 Cookie 消息頭:
path=/blog
在這個例子中,path 選項值會與 /blog,/blogrool 等等相匹配;任何以 /blog 開頭的選項都是合法的。
secure 選項只有當一個請求通過 SSL 或 HTTPS 創(chuàng)建時,包含 secure 選項的 cookie 才能被發(fā)送至服務器。例如:
Set-Cookie: value; secure
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/93804.html
摘要:兩個域之間是不是存在跨域問題,主要是根據(jù)協(xié)議域名端口號這三個點進行判斷,只要有一個不一樣就是跨域。例如協(xié)議不同與域名不同與端口號不同與瀏覽器默認情況下無法主動跨域向后端發(fā)送,需要在前端請求時加入配置項。據(jù)此,可以實現(xiàn)單點登錄。 cookie是什么 cookie的英文意思是餅干。在計算機術(shù)語中指服務端存放在客戶端的一段數(shù)據(jù)。這段數(shù)據(jù)在客戶端每次進行http請求時會自動加在http請求報文...
摘要:兩個域之間是不是存在跨域問題,主要是根據(jù)協(xié)議域名端口號這三個點進行判斷,只要有一個不一樣就是跨域。例如協(xié)議不同與域名不同與端口號不同與瀏覽器默認情況下無法主動跨域向后端發(fā)送,需要在前端請求時加入配置項。據(jù)此,可以實現(xiàn)單點登錄。 cookie是什么 cookie的英文意思是餅干。在計算機術(shù)語中指服務端存放在客戶端的一段數(shù)據(jù)。這段數(shù)據(jù)在客戶端每次進行http請求時會自動加在http請求報文...
摘要:于是和就出現(xiàn)了,用于在端和端來分別維護我是誰的狀態(tài)。這種做法就是協(xié)議本身支持狀態(tài)。每次消費時,如果顧客出示這張卡片,則此次消費就會與以前或以后的消費相聯(lián)系起來。所以兩者的作用域不一樣。因此才會出現(xiàn)這種情況。 1、Cookie Cookie 是瀏覽器訪問服務器后,服務器傳給瀏覽器的一段數(shù)據(jù) 該數(shù)據(jù)以一個稱為Set-Cookie的 HTTP 報頭格式從 Web 服務器發(fā)出。 瀏覽器以稱為...
摘要:根據(jù)提供的超級全局數(shù)組來創(chuàng)建實例上面的代碼有一處需要額外解釋一下,自開始內(nèi)建的可以通過命令行解釋器來啟動,例如但是內(nèi)建有一個是將和這兩個請求首部存儲到了和中,為了統(tǒng)一內(nèi)建服務器和真正的中的請求首部字段所以在這里做了特殊處理。 Request 很多框架都會將來自客戶端的請求抽象成類方便應用程序使用,在Laravel中也不例外。IlluminateHttpRequest類在Laravel框...
摘要:瀏覽器的同源策略瀏覽器所遵守的同源策略是指限制不同源之間執(zhí)行特定操作。這正是同源策略想要規(guī)避的安全隱患。目前為止,你已經(jīng)充分了解同源策略這個主題。 我們之前提到過,AJAX技術(shù)使開發(fā)者能夠?qū)W⒂诨ヂ?lián)網(wǎng)中數(shù)據(jù)的傳輸,而不再拘泥于數(shù)據(jù)傳輸?shù)妮d體。通過AJAX技術(shù),我們獲取數(shù)據(jù)的方式變得更加靈活,可控和優(yōu)雅。 但是AJAX技術(shù)并不是一把萬能鑰匙,互聯(lián)網(wǎng)中的數(shù)據(jù)隱私和數(shù)據(jù)安全(例如你的銀行賬號...
閱讀 2742·2021-09-02 15:11
閱讀 914·2019-08-26 18:18
閱讀 1872·2019-08-26 11:57
閱讀 3325·2019-08-23 16:59
閱讀 2003·2019-08-23 16:51
閱讀 2312·2019-08-23 16:11
閱讀 3131·2019-08-23 14:58
閱讀 1113·2019-08-23 11:34