首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

SharePoint 2013 On Azure 解決 iframe 跨域 SCRIPT5: Access is denied 問題

     編輯:關於C++

問題現象

SharePoint 頁面嵌入 DataZen 報表(iframe)。Chrome 正常,IE 提示 SCRIPT5: Access is denied,且彈出登錄框。iframe 內容來自不同域(Azure)。

根本原因

IE **同源策略**嚴格禁止跨域 iframe 內腳本訪問父頁面 DOM 或 Cookie。DataZen 在 iframe 中需認證,觸發安全攔截。

解決方案:IE 信任站點 + 跨域設置

  1. 打開 IE → 設置 → Internet 選項 → 安全 標籤。
  2. 選 **受信任的站點** → 站點 → 添加 DataZen 域(如 https://*.azure.com),取消勾選「要求服務器驗證」。
  3. 點 **自定義級別** → 滾動到「其他」區域:
     - **跨域瀏覽窗口和框架** → **啟用**
     - **通過域訪問數據源** → **啟用**
  4. 確定保存,重啟 IE。

原理說明

  • 「跨域瀏覽窗口和框架」允許 iframe 跨域導航與腳本交互。
  • 「通過域訪問數據源」允許跨域 XMLHTTP/資源訪問。
  • 受信任站點降低安全等級,允許自動登錄、Cookie 傳遞。

替代方案(生產環境推薦)

  • **同域部署**:將 DataZen 部署在 SharePoint 同域下,徹底消除跨域。
  • **反向代理**:Nginx/IIS 代理 DataZen 路徑到同域路徑,設置 Access-Control-Allow-Origin。
  • **CORS 配置**:DataZen/後端設置正確 CORS 頭,支持憑證模式(withCredentials=true)。

驗證步驟

  1. 修改 IE 設置後刷新頁面。
  2. 不再彈出登錄框,報表正常渲染。
  3. F12 Console 無 SCRIPT5 錯誤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved