javascript中的Catch X-Frame-Options错误
Catch X-Frame-Options Error in javascript
从另一个域加载iframe时,是否有任何方法可以捕获错误。下面是jsfiddle中的一个例子。http://jsfiddle.net/2Udzu/。如果我收到错误,我需要显示一条消息。
以下是我想做的,但不起作用:
$('iframe')[0].onerror = function(e) {
alert('There was an error loading the iFrame');
}
有人有什么想法吗?
onerror
仅适用于脚本错误。帧内容错误检查必须使用任何其他方法进行。这里有一个例子。
<script>
function chkFrame(fr) {
if (!fr.contentDocument.location) alert('Cross domain');
}
</script>
<iframe src="http://www.google.com/" onload="chkFrame(this)"></iframe>
由于跨域限制,无法检测页面是否成功加载,或者页面是否因客户端错误(HTTP 4xx错误)和服务器错误(HTTP 5xx错误)而无法加载。
如果父站点和iframe url都可以访问,那么知道页面已完全加载(没有"同源"问题)的一种方法是从子站点向父站点发送消息(postMessage),如下所示;
父站点(包含iframe)
//Listen for message
window.addEventListener("message", function(event) {
if (event.data === "loading_success") {
//Yay
}
});
//Check whether message has come through or not
iframe_element.onload = function () {
//iframe loaded...
setTimeout(function() {
if (!iframeLoaded) {
//iframe loaded but no message from the site - URL not allowed
alert("Failure!");
}
}, 500);
};
子站点(iframe中的URL)
parent.postMessage("loading_success", "https://the_origin_site.url/");
如果你想要多个来源的可能性,你可以通过使用像PHP这样的服务器端语言来获得the_origin_site.url
只有当你试图放入iframe的域与你请求的域相同时,接受的答案才有效——这个解决方案适用于你可以访问两个域上的脚本的跨域。
我使用以下代码来检测jquery 是否发生了x帧选项错误
$(iframe).load(function (e) {
try
{
// try access to check
console.log(this.contentWindow.document);
// Access possible ...
}
catch (e)
{
// Could not access. Read out error type
console.log(e);
var messageLC = e.message.toLowerCase();
if (messageLC.indexOf("x-frame-options") > -1 || messageLC.indexOf('blocked a frame with origin') > -1 || messageLC.indexOf('accessing a cross-origin') > -1)
{
// show Error Msg with cause of cross-origin access denied
}
else
{
// Shoe Error Msg with other cause
}
}
});
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- CKFinder 3为所选文件返回错误的URL
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- 相位器状态未捕获参考错误
- javascript中的Catch X-Frame-Options错误
- 错误响应上的X-Frame-Options标头
- Iframe Alt Text当X-Frame-Options:SAMEORIGIN|DENY的Iframe加载错误时
- 检测方式“;拒绝显示文档,因为X-Frame-Options禁止显示"错误
- 获取错误拒绝显示'http://www.asp.net/'在帧中,因为它设置了'X-Frame-
- Google Drive文件上传使用JavaScript API抛出X-Frame-Options错误