- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業(yè)務(wù)經(jīng)營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯(lián)網(wǎng)協(xié)會理事單位
- 安全聯(lián)盟認(rèn)證網(wǎng)站身份V標(biāo)記
- 域名注冊服務(wù)機(jī)構(gòu)許可:滇D3-20230001
- 代理域名注冊服務(wù)機(jī)構(gòu):新網(wǎng)數(shù)碼
歡迎來到藍(lán)隊(duì)云技術(shù)小課堂,每天分享一個技術(shù)小知識。
通常情況下,瀏覽器的安全策略(比如同源策略 Same-Origin Policy)會阻止 Cookie 跨域共享,這是為了保護(hù)用戶隱私和防止跨站攻擊。但實(shí)際上,通過一些特殊的配置和手段,我們是可以在特定條件下實(shí)現(xiàn)跨域共享 Cookie 的。
1. 設(shè)置 Cookie 的 SameSite 屬性:
SameSite 屬性決定了 Cookie 是否會隨著跨站請求一起發(fā)送。它有三個常見的值:
Strict:嚴(yán)格模式,只允許同源請求發(fā)送 Cookie,跨域請求不會發(fā)送。
Lax:默認(rèn)值,允許部分跨域請求(例如,用戶點(diǎn)擊鏈接跳轉(zhuǎn)時)發(fā)送 Cookie。
None:不做限制,允許所有跨域請求發(fā)送 Cookie,但必須配合 Secure 屬性(也就是說,必須在 HTTPS 下有效)。
例如:
Set-Cookie: sessionId=abc123; SameSite=None; Secure
注意:如果設(shè)置了 SameSite=None,那么必須同時設(shè)置 Secure,否則瀏覽器會拒絕發(fā)送這個 Cookie。
2. 跨域共享 Cookie 的幾種方案:
2.1 使用頂級域名共享:
如果兩個子域名屬于同一個頂級域名(例如 a.example.com 和 b.example.com),可以通過設(shè)置 Cookie 的 Domain 屬性來實(shí)現(xiàn)共享: Set-Cookie: sessionId=abc123; Domain=.example.com; Path=/
這樣,example.com 下的所有子域名都能訪問這個 Cookie。
2.2 通過服務(wù)器代理:
一種常見的跨域方式是讓前端通過同源的服務(wù)器代理請求到跨域的 API。比如,前端向自己的域名下的 /api 發(fā)送請求,服務(wù)器再將請求代理到目標(biāo) API 地址。這樣,瀏覽器會認(rèn)為請求來自同一域名,從而避開跨域限制。
3. CORS + Cookie 跨域配置:
要想在跨域請求時攜帶 Cookie,客戶端和服務(wù)器都需要進(jìn)行相應(yīng)的配置:
客戶端配置:
fetch('http://www.tjdsmy.cn/data', {
credentials: 'include' // 強(qiáng)制請求時帶上 Cookie
});
服務(wù)器配置(跨域 API 的響應(yīng)頭):
Access-Control-Allow-Origin: http://www.tjdsmy.cn
Access-Control-Allow-Credentials: true
注意:Access-Control-Allow-Origin 不能設(shè)置為 *,必須明確指定來源;而 Access-Control-Allow-Credentials: true 表示允許攜帶 Cookie。
4. JSONP(已過時):
以前,JSONP 被用作跨域請求的解決方案,能夠?qū)崿F(xiàn)跨域數(shù)據(jù)共享,但僅限于 GET 請求?,F(xiàn)在這種方式已經(jīng)過時,不再推薦使用。
5. 風(fēng)險與安全性:
跨域共享 Cookie 存在一定的安全風(fēng)險,尤其是在涉及用戶身份認(rèn)證時。為了保證安全性,建議:
盡量使用 HTTPS 協(xié)議來加密傳輸。
設(shè)置 Cookie 的 HttpOnly 和 Secure 屬性,避免 Cookie 被 JavaScript 訪問或通過非安全渠道泄漏。
使用 SameSite 來控制 Cookie 的跨站行為。
藍(lán)隊(duì)云官網(wǎng)上擁有完善的技術(shù)支持庫可供參考,大家可自行查閱,更多技術(shù)問題,可以直接咨詢。同時,藍(lán)隊(duì)云整理了運(yùn)維必備的工具包免費(fèi)分享給大家使用,需要的朋友可以直接咨詢。
更多技術(shù)知識,藍(lán)隊(duì)云期待與你一起探索。
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP