违反X-Frame-Options / Content-Security-Policy时是否有任何事件被触发?

时间:2017-07-06 12:36:35

标签: javascript security iframe same-origin-policy

我正在部署可以配置为在iframe中加载第三方内容的应用程序。如果它指向包含X-Frame-Options: SAMEORIGIN或类似的服务,则浏览器可以透明地阻止加载请求。我希望在发生这种情况时改善用户体验 - 在页面上显示一些有用的错误消息,因为大多数用户都不知道检查Javascript控制台以了解它为什么不起作用。



const frame = document.getElementById("frm"),
  btn1 = document.getElementById("btn1"),
  btn2 = document.getElementById("btn2"),
  txt = document.getElementById("txt");
  
btn1.addEventListener("click", function(){txt.textContent="Loading...";frame.src="https://stackoverflow.com";})
btn2.addEventListener("click", function(){txt.textContent="Loading...";frame.src="https://www.google.com/search?q=hello";})

frame.addEventListener("load", function(evt){txt.innerHTML = txt.innerHTML + "<br/>It loaded!";});

frame.addEventListener("error", function(evt){txt.innerHTML = txt.innerHTML + "<br/>It broke!";});

frame.addEventListener("securitypolicyviolation", function(evt){txt.innerHTML = txt.innerHTML + "<br/>Violation!";});
&#13;
<iframe id="frm" src="about:blank"></iframe>
<br/>
<button type="button" id="btn1">Load good content</button>
<button type="button" id="btn2">Load bad content</button>
<br/>
<div id="txt"></div>
&#13;
&#13;
&#13;

我已为iframeload的{​​{1}}元素添加了事件监听器,但阻止(&#34;错误&#34;)请求仍会触发{{1} event和nothing都不会触发错误处理程序。我怎样才能犯&#34;错误&#34;请求被阻止时处理程序是否会触发?

ETA:我还为error添加了一个听众,但似乎也没有(至少在最新的Chromium上)。

0 个答案:

没有答案