WHATWG 撤回 sandboxed iframe 彈窗跨來源限制,回復到「從未真正上線」的舊行為
GitHub (whatwg/html) · 2026-08-18
背景
HTML 規格先前透過 5f626a1 與 7c8fb86 兩個 commit,為 sandboxed <iframe> 內的 alert()、confirm()、prompt() 加上了額外限制:即使 sandbox 屬性同時具備 allow-modals 與 allow-same-origin,規格文字仍要求載入的 URL 必須與頂層來源(top-level origin)同源才能顯示這些「簡單對話框」。這項限制從未被任何瀏覽器實作上線,原因是相容性問題——大量現存網站的 sandboxed cross-origin iframe 仍預期能跳出 alert()。
核心改動
commit 40814ebfef15(作者 Noam Rosenthal)在規格 source 檔案中刪除了兩處共 15 行文字,直接還原先前兩個 commit 的效果。第一處刪掉了 iframe sandbox 屬性說明段落中,關於「需要同源才能顯示簡單對話框」的提示文字;第二處則是刪掉「sandboxed modals flag」演算法裡的同源檢查步驟。
@@ -129919,11 +129909,6 @@ ...sandboxed modals flag...
- <li><p>If window's relevant settings object's origin and
- window's relevant settings object's top-level origin are not
- same origin-domain, then return true.</p></li>
-
<li>If window's relevant agent's event loop's termination
nesting level is nonzero, then optionally return true.</li>改動後,只要 sandbox 屬性中有 allow-modals,sandboxed iframe 即可顯示簡單對話框,不再要求額外具備 allow-same-origin 或與頂層頁面同源。
影響範圍
這次修訂讓規格文字與現行瀏覽器的實際行為一致,開發者在替第三方 cross-origin 內容設定 sandbox 屬性時,不需要為了讓對話框能運作而額外加上 allow-same-origin(這往往意味著放寬其他安全邊界)。對仍在依賴規格文字撰寫測試或 polyfill 的工具鏈而言,這也代表 WPT 測試案例需要同步更新以反映移除後的行為。
值得留意的是,這是規格追認既有實作行為的典型案例:規格與實作出現落差時,WHATWG 傾向修改規格文字去貼近瀏覽器實際做法,而非要求瀏覽器補實作規格。對於仰賴 sandboxed iframe 隔離第三方內容(例如廣告、嵌入式小工具)的網站,這代表可以放心維持現有只設定 allow-modals 的寫法,不必擔心未來瀏覽器會突然開始檢查同源限制。
Firefox 154.0 發布:WebSocket 納入區域網路存取保護,新增 CSS text-box 與 sibling 函式
firefox.com release notes · 2026-08-18
核心改動
區域網路存取保護(Local Network Access)的涵蓋範圍在 Firefox 154.0 中擴大到 WebSocket 連線:網站若嘗試對區域網路裝置開啟 WebSocket,瀏覽器會先跳出權限請求,行為比照先前已套用在一般 fetch 請求上的規則。此外,網站的 cookie/資料清除設定現在可以獨立於追蹤保護規則之外單獨設定「關閉瀏覽器時保留」白名單,不必為了保留資料而連帶放寬防追蹤限制。Hard reload(Shift+重新整理)現在也會一併清除並更新頁面快取的 favicon。
- CSS 新屬性:
text-box-trim、text-box-edge,以及簡寫text-box - CSS 新函式:
sibling-index()、sibling-count() <input type="time">與<input type="datetime-local">新增原生時間選擇器 UI- 磁碟快取支援
No-Vary-SearchHTTP 標頭 - Iterator 新增輔助方法:
chunks()、windows()、includes()、join()
影響範圍
對前端開發者而言,最直接的影響是本機開發流程:若網頁應用會對 localhost 或內網裝置(例如硬體除錯介面、內網 API)建立 WebSocket 連線,使用者會在 Firefox 154 上看到新增的權限提示,需要調整流程說明或改用使用者手勢觸發連線。CSS 的 sibling-index()/sibling-count() 讓斑馬紋列表、動態間距等過去需要 JS 或 :nth-child 硬編數字才能做到的效果,可直接用 CSS 函式表達;text-box-trim 則解決了排版中標題文字周圍留白不一致的老問題。