首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 跨域數據共享:不同主域名 www.test1.com 到 www.test2.com 解決方案

     編輯:程式設計綜合問答

場景

兩個完全不同的主域名(非同一主域下的子域),需實現數據共享/單點登錄/跨域請求。

主流解決方案對比

方案原理優點缺點適用場景
CORS (Cross-Origin Resource Sharing) 服務端設置 Access-Control-Allow-Origin: https://www.test2.com、Allow-Credentials: true 標準、瀏覽器原生支持、支持 Cookie/Session 需服務端配置、舊瀏覽器不兼容(IE10+) 現代 Web API 跨域調用、前後端分離
JSONP 動態插入 <script src="https://test1.com/api?callback=fn">,利用腳本標籤不受同源策略限制 兼容極舊瀏覽器(IE6+)、簡單 僅支持 GET、無錯誤處理、安全風險(XSS)、不支持 Cookie 舊項目兼容、公開只讀 API
Nginx 反向代理 前端頁面通過同域 Nginx 轉發請求到後端不同域服務,proxy_pass 並添加 CORS 頭 對前端透明、可統一認證、限流、日誌 增加基礎設施複雜度、需運維 企業級應用、微服務網關
PostMessage + Iframe 嵌入對方域 Iframe,雙向 window.postMessage 通信 無需後端改造、支持雙向通信 需雙方部署頁面、安全驗證 origin、Iframe 限制 第三方嵌入、跨域組件通信
統一認證中心 (SSO/CAS/OAuth2) 跳轉至統一登錄域,簽發 Token,雙方驗證 Token 獲取用戶信息 解決跨域登錄共享、標準協議 架構複雜、需維護認證服務 多系統單點登錄、開放平台

推薦實施路徑

  1. API 跨域調用:直接配置 CORS,最簡單標準。
  2. 需攜帶 Cookie/Session:CORS + Access-Control-Allow-Credentials: true,前端 withCredentials: true,注意:Allow-Origin 不能為 *,必須指定具體域名。
  3. 單點登錄:引入 OAuth2/OIDC(Keycloak、IdentityServer4、自研 CAS)。
  4. 舊系統兼容:Nginx 反向代理統一入口,內部服務無感知。

參考資源

CSDN 詳細教程:Java 跨域數據共享實戰

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved