公交车上荫蒂添的好舒服的电影-公用玩物(np双xing总受)-公用小荡货芊芊-公与妇仑乱hd-攻把受做哭边走边肉楼梯play-古装一级淫片a免费播放口

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

5種瀏覽器跨域解決方案 完美解決常見(jiàn)跨域問(wèn)題

admin
2025年2月20日 16:56 本文熱度 1129

1. 什么是跨域?

跨域(Cross-Origin)是指瀏覽器出于安全考慮,限制不同源(協(xié)議、域名、端口)之間的資源交互。

同源策略(Same-Origin Policy) 要求以下三者必須一致:

  • 協(xié)議(HTTP/HTTPS)

  • 域名(如 example.com 與 api.example.com 不同源)

  • 端口(如 80 與 8080 不同源)



2. 跨域的表現(xiàn)形式

當(dāng)以下場(chǎng)景發(fā)生在不同源時(shí),瀏覽器會(huì)攔截請(qǐng)求:

  • AJAX/Fetch 請(qǐng)求

  • WebSocket 連接

  • 頁(yè)面中嵌入第三方資源(如 <iframe>、字體、腳本)



3. 常見(jiàn)跨域解決方案

3.1 CORS(跨域資源共享)

原理:服務(wù)端通過(guò)響應(yīng)頭聲明允許的跨域請(qǐng)求來(lái)源。

實(shí)現(xiàn)步驟

  1. 1.簡(jiǎn)單請(qǐng)求(GET/POST/HEAD,Content-Type 為 text/plainmultipart/form-dataapplication/x-www-form-urlencoded):
    服務(wù)端返回 Access-Control-Allow-Origin: * 或具體域名。

  2. 2.預(yù)檢請(qǐng)求(復(fù)雜請(qǐng)求如 PUT/DELETE 或自定義頭):
    瀏覽器先發(fā)送 OPTIONS 請(qǐng)求,服務(wù)端需響應(yīng):

    Access-Control-Allow-Origin: https://your-domain.comAccess-Control-Allow-Methods: GET, POST, PUTAccess-Control-Allow-Headers: Content-Type, Authorization

示例代碼(Node.js Express)

app.use((req, res, next) => {  res.header("Access-Control-Allow-Origin", "https://your-client.com");  res.header("Access-Control-Allow-Headers", "Content-Type, Authorization");  res.header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");  if (req.method === "OPTIONS") {    return res.sendStatus(200); // 快速返回預(yù)檢請(qǐng)求響應(yīng)  }  next();});

3.2 JSONP(JSON with Padding)

原理:利用 <script> 標(biāo)簽無(wú)跨域限制的特性,通過(guò)回調(diào)函數(shù)獲取數(shù)據(jù)。

缺點(diǎn):僅支持 GET 請(qǐng)求,存在安全風(fēng)險(xiǎn)(如 XSS)。

示例代碼

// 前端function handleResponse(data) {  console.log("Received:", data);}const script = document.createElement('script');script.src = 'https://api.example.com/data?callback=handleResponse';document.body.appendChild(script);
// 服務(wù)端返回handleResponse({ "status": "success", "data": [...] });

3.3 代理服務(wù)器

原理:通過(guò)同源的后端服務(wù)轉(zhuǎn)發(fā)請(qǐng)求,繞過(guò)瀏覽器限制。

實(shí)現(xiàn)方式

  • Nginx 反向代理

location /api/ {  proxy_pass https://api.example.com/;  proxy_set_header Host $host;}

開(kāi)發(fā)環(huán)境代理(如 webpack-dev-server)

  1. // vue.config.js / webpack.config.jsmodule.exports = {  devServer: {    proxy: {      '/api': {        target: 'https://api.example.com',        changeOrigin: true,      }    }  }};

    3.4 WebSocket

    原理:WebSocket 協(xié)議不受同源策略限制。
    ?示例代碼

  1. const socket = new WebSocket('wss://api.example.com/socket');socket.onmessage = (event) => {  console.log('Message:', event.data);};

    3.5 其他方案

    • 修改 document.domain
      僅適用于主域相同、子域不同的場(chǎng)景(需同時(shí)設(shè)置父頁(yè)面和子頁(yè)面):

    document.domain = "example.com"// 父頁(yè)面和子頁(yè)面均需設(shè)置        

postMessage API

用于窗口間通信(如 <iframe> 與父頁(yè)面):

// 發(fā)送方window.parent.postMessage('Hello', 'https://parent-domain.com');
// 接收方window.addEventListener('message', (event) => {  if (event.origin !== 'https://child-domain.com') return;  console.log('Received:', event.data);});

4. 調(diào)試與注意事項(xiàng)

  • 瀏覽器控制臺(tái)報(bào)錯(cuò):如 CORS policy 錯(cuò)誤提示。

  • 攜帶憑證(Credentials)
    若請(qǐng)求需要 Cookies 或認(rèn)證頭,需設(shè)置:

// 前端fetch(url, { credentials: 'include' });
// 服務(wù)端res.header("Access-Control-Allow-Credentials", "true");res.header("Access-Control-Allow-Origin", "https://your-client.com"); // 不能為通配符 *

  • 安全性:避免濫用 Access-Control-Allow-Origin: *,防止 CSRF 攻擊。

?

5. 總結(jié)

  • 推薦方案:優(yōu)先使用 CORS 或代理服務(wù)器。

  • 兼容性場(chǎng)景:JSONP 適用于老舊系統(tǒng)。

  • 實(shí)時(shí)通信:WebSocket 是理想選擇。

通過(guò)理解跨域機(jī)制及解決方案,開(kāi)發(fā)者可靈活應(yīng)對(duì)不同場(chǎng)景的跨域需求。


該文章在 2025/2/20 16:59:28 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产三级级在线观看播放 | 国产精品成人99电影 | 丰满人妻被黑人猛烈进入 | 国产成人无码精品一区 | 国产日韩亚洲欧美视频在线 | 国产一区在线观看 | 91po最新国产在线 | 国产麻豆福利在线观看 | 国产成人尤物精品一区 | 国产成人啪一区二区 | 国产欧美另类久久久精品丝瓜 | 国产成人无码a区在线观9 | 精品无码一二三四区 | 国产成人啪精品视频免费软件 | 18禁无遮挡爽爽爽无码视频 | 91黄页免费观看 | 国产成人无码免费视频97动漫 | 国产精品成人观看视频免费 | 国产福利一区二区在线视频 | 国产美女激情在线观看 | 国产午夜草莓视频在线观看 | 精品精品国产欧美在线 | 成人自拍视频在线观看 | 国产成人垃圾片一区二区三区 | 91在线软件 | 国产主播大尺度精 | 国产亚洲视频在线观看播放 | 国产成人av在线播放欲色 | 国产一区二区激情戏 | 高清无码一区二区在线观看吞精 | 精品日韩av一区二区三区 | 成人精品无码 | 国产精品国语自产 | 91精品久久香蕉国产线看观看 | 国产成人精品一区二区免费 | 国产高清亚洲一区二区三区 | 1000部啪啪未满十八勿入 | 成无码网站在线观看 | 国产精品浓毛一区二区三区 | 91精品国产秘入口 | 国产日韩精品一区二 |