午夜视频在线观看区二区-午夜视频在线观看视频-午夜视频在线观看视频在线观看-午夜视频在线观看完整高清在线-午夜视频在线观看网站-午夜视频在线观看亚洲天堂

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

5種瀏覽器跨域解決方案 完美解決常見跨域問題

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

1. 什么是跨域?

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

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

  • 協議(HTTP/HTTPS)

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

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



2. 跨域的表現形式

當以下場景發生在不同源時,瀏覽器會攔截請求:

  • AJAX/Fetch 請求

  • WebSocket 連接

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



3. 常見跨域解決方案

3.1 CORS(跨域資源共享)

原理:服務端通過響應頭聲明允許的跨域請求來源。

實現步驟

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

  2. 2.預檢請求(復雜請求如 PUT/DELETE 或自定義頭):
    瀏覽器先發送 OPTIONS 請求,服務端需響應:

    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); // 快速返回預檢請求響應  }  next();});

3.2 JSONP(JSON with Padding)

原理:利用 <script> 標簽無跨域限制的特性,通過回調函數獲取數據。

缺點:僅支持 GET 請求,存在安全風險(如 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);
// 服務端返回handleResponse({ "status": "success", "data": [...] });

3.3 代理服務器

原理:通過同源的后端服務轉發請求,繞過瀏覽器限制。

實現方式

  • Nginx 反向代理

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

開發環境代理(如 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 協議不受同源策略限制。
    ?示例代碼

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

    3.5 其他方案

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

    document.domain = "example.com"// 父頁面和子頁面均需設置        

postMessage API

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

// 發送方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. 調試與注意事項

  • 瀏覽器控制臺報錯:如 CORS policy 錯誤提示。

  • 攜帶憑證(Credentials)
    若請求需要 Cookies 或認證頭,需設置:

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

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

?

5. 總結

  • 推薦方案:優先使用 CORS 或代理服務器。

  • 兼容性場景:JSONP 適用于老舊系統。

  • 實時通信:WebSocket 是理想選擇。

通過理解跨域機制及解決方案,開發者可靈活應對不同場景的跨域需求。


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

主站蜘蛛池模板: 国产综合欧美视频 | 国产成人黄色网站视频在线观看 | 国产午夜在线免费视频 | 国产成免费人成网站 | 精品国产三级a∨在线观看 精品国产三级a∨在线欧美 | 国产精品国三级国产av视色 | 囯产目拍亚洲精品小草 | 91成人影院在线观看 | 91网视频在线观看 | 国产成人无码a区在线观看软件 | 国产av剧情超级爽闺蜜 | 国产人妻熟女久久久久 | 国产无码不卡在线观看 | 国产成人综合伊人日韩 | 国产一区二区三四区 | 国产人妻熟女在线观看高清完整 | 加勒比人妻av无码不卡 | 国产精品亚洲av人片 | 国产一区二区精品久久岳√ | 国产精品亚洲综合天堂夜夜 | 丰满人妻av | 国产日韩精品欧美一区灰灰 | 国产成人一区二区三区综合网影院 | 国产尤物无码一区二区 | 99久久人妻精品免费二区 | 国产成人综合在线视 | 国产成人精品一区二区三 | 国产盗摄精品一区 | 国内精品视频一区二区三区 | 国产野战无套a | 国产精品v一区二区三区 | 18禁日本黄无遮挡免费观看 | 国产经典系列在线观看 | 国产成人综合久久精品亚洲 | 国产精品午夜福利不卡 | 成人午夜一区二区三 | 国产精品国产三级国产普通话一 | 99国产精品热久久久久久 | 18禁黄网站禁片免费观看 | av视频在线观看 | 加勒比东京热无码中文字幕 |