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