問題現象
SharePoint 頁面嵌入 DataZen 報表(iframe)。Chrome 正常,IE 提示 SCRIPT5: Access is denied,且彈出登錄框。iframe 內容來自不同域(Azure)。
根本原因
IE **同源策略**嚴格禁止跨域 iframe 內腳本訪問父頁面 DOM 或 Cookie。DataZen 在 iframe 中需認證,觸發安全攔截。
解決方案:IE 信任站點 + 跨域設置
- 打開 IE → 設置 → Internet 選項 → 安全 標籤。
-
- 選 **受信任的站點** → 站點 → 添加 DataZen 域(如
https://*.azure.com),取消勾選「要求服務器驗證」。
- 點 **自定義級別** → 滾動到「其他」區域:
- **跨域瀏覽窗口和框架** → **啟用**
- **通過域訪問數據源** → **啟用**
- 確定保存,重啟 IE。
原理說明
- 「跨域瀏覽窗口和框架」允許 iframe 跨域導航與腳本交互。
- 「通過域訪問數據源」允許跨域 XMLHTTP/資源訪問。
- 受信任站點降低安全等級,允許自動登錄、Cookie 傳遞。
替代方案(生產環境推薦)
- **同域部署**:將 DataZen 部署在 SharePoint 同域下,徹底消除跨域。
- **反向代理**:Nginx/IIS 代理 DataZen 路徑到同域路徑,設置
Access-Control-Allow-Origin。
- **CORS 配置**:DataZen/後端設置正確 CORS 頭,支持憑證模式(
withCredentials=true)。
驗證步驟
- 修改 IE 設置後刷新頁面。
- 不再彈出登錄框,報表正常渲染。
- F12 Console 無
SCRIPT5 錯誤。