Refused to display 'http://www.***.com/login/doLogin.html' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.

触发原因:页面的返回头被设置 X-Frame-Options SAMEORIGIN ,只能被同源的iframe 引用。跨域名的iframe 没法显示了。

解决办法:
第一步 把 服务器上的 X-Frame-Options header 去掉

第二步 添加 如下代码到 不想被iframe 的页面header 里去。
<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>

其他:

X-Frame-Options ALLOW-FROM 只支持单一域名 想支持多个二级域名的这个无解

并不是所有的浏览器都支持  这个header 所以,低版本的浏览器仍然会被iframe 成功

参考:http://www.css88.com/archives/5141

Browsers Supporting X-Frame-Options  
http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx

  • IE8+
  • Opera 10.50+
  • Safari 4+
  • Chrome 4.1.249.1042+ (Allow-From not yet supported)
  • Firefox 3.6.9 (or earlier with NoScript)

无法通过 <meta http-equiv=”X-FRAME-OPTIONS” content=”SAMEORIGIN”> 这种形式在document 的 header 里面设置,只能通过 http header 设置。

Browsers ignore the header if speicified in the META tag. So the following META will be ignored:

<meta http-equiv="X-Frame-Options" content="deny">

防止被IFRAME :把这些代码放到你的 header 里

<style id="antiClickjack">body{display:none !important;}</style>
<script>
if (self === top) {
var antiClickjack = document.getElementById("antiClickjack");
antiClickjack.parentNode.removeChild(antiClickjack);
} else {
top.location = self.location;
}
</script>
参考这个帖子
https://www.codemagi.com/blog/post/194

关于点击劫持 和 被iframe 的其他参考:

http://javascript.info/tutorial/clickjacking

http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx

https://developer.mozilla.org/en-US/docs/Web/HTTP/X-Frame-Options

带中文请求的URL 可能会返回400 需要 encodeURIComponent 处理.尤其是使用IE 的时候。

转载于:https://www.cnblogs.com/trance/p/4645486.html

使用 X-Frame-Options 防止被iframe 造成跨域iframe 提交挂掉相关推荐

  1. Cross Domian iFrame Exceptions 跨域iFrame屏蔽例外

    var frameBustingRegex = /^(https?:\/\/)?(www|beta)\.foo1\.com(\/.*|$)|^(https?:\/\/)?www\.foo2\.com( ...

  2. iframe解决跨域ajax请求的方法

    iframe跨域的基本前提是,一个页面可以嵌套非同源站点的html文件,以及某一个域名下的html页面可以通过脚本向同域名服务器发出ajax请求.当一个域名为domain1下的页面A想要向domain ...

  3. 使用iframe+postMessage跨域操作和通信

    使用iframe+postMessage跨域操作和通信 场景 1. http://XXX/a.html(自己的)页面要操作http://YYY/b.html(其他域名的) 2. 看了网上很多都是同域名 ...

  4. 跨域iframe的高度自适应

    原文:跨域iframe的高度自适应 跨子域的iframe高度自适应 完全跨域的iframe高度自适应 同域的我们可以轻松的做到 1. 父页面通过iframe的contentDocument或docum ...

  5. 完美实现跨域Iframe高度自适应【Iframe跨域高度自适应解决方案】

    Iframe的强大功能偶就不多说了,它不但被开发人员经常运用,而且黑客们也常常使用它,总之用过的人知道它的强大之处,但是Iframe有个致命的"BUG"就是iframe的高度无法自 ...

  6. 关于父窗口获取跨域iframe子窗口中的元素

    这几天在项目中遇到,一个难点, 就是需要异步加载一个pdf插件, 同时又需要获取这个插件中的点击事件来生成用户的下载记录. 刚开始也是想了很多方法,网上搜的 格式1:$("#iframe的I ...

  7. JS刷新Iframe,跨域

    需求 项目中会有刷新iframe的需求, 方法 一般情况下,我们直接用iframe的==location.reload(true)==方法就可以了,它的缺点是,如果是刷新外部的URL(不同源的),那么 ...

  8. 跨域iframe高度自适应(兼容IE/FF/OP/Chrome)

    采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引发出同域.跨域两种情况. 由于客户端js使用浏览器的同源安全策 ...

  9. 用P3P header解决IE下iframe跨域访问时候session丢失的问题

    用P3P header解决IE下iframe跨域访问时候session丢失的问题 整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会sess ...

  10. iframe 跨域_【梯云纵】搞定前端跨域

    韦陀掌法,难陀时间善恶:梯云纵,难纵过乱世纷扰. 现在开始写代码o(╯□╰)o 什么是跨域 1.跨域的定义 广义的跨域是指一个域下对的文档或者脚本试图去请求另外一个域下的资源. a链接.重定向.表单提 ...

最新文章

  1. echarts Cannot read property ‘getAttribute‘ of null 问题的解决方法
  2. lua----------------使用VS2015搭建lua开发环境的一些侥幸成功经验,
  3. CSDN×易观算法大赛火热进行中~
  4. c++语言定义排序函数,关于C++中定义比较函数的三种方法小结
  5. Python中的音频和数字信号处理(DSP)
  6. GoogleMaterialDesign900个实用的Axure图标组件库
  7. PHP读取Excel数据
  8. iOS13.3越狱插件推荐
  9. ncsi信号测试软件,02-附录
  10. 【小程序云开发】30分钟搭建个人相册小程序
  11. VS2015 还是VS2017 好用_强烈推荐:2020年12款Visual Studio 好用的工具
  12. “熊猫烧香”病毒简介及特征
  13. 继 Facebook 开源 PyTorch3D 后,谷歌开源 TensorFlow 3D 场景理解库
  14. php 获取视频首帧,PHP获取视频的第一帧与时长
  15. F - 士兵队列训练问题 HDU - 1276
  16. Arduino蓝牙模块实验(HC-42)
  17. excel 透视表 vba_使用Excel VBA删除数据透视表计算字段
  18. 东北大学acm暑期夏令营结构体
  19. 零基础学Qt 4编程实例之三:勾三股四弦必五—文件包含语句与标准库的使用
  20. 国外便宜服务器租用有哪些问题

热门文章

  1. 开启和关闭android移动网络
  2. xxx.com和www.xxx.com的区别
  3. 眼血管分割matlab,视网膜血管分割matlab
  4. jpg转换成pdf转换器免费版
  5. 14岁考入清华,22岁博士四年级,杜克大学杨幻睿的AI成长之路
  6. Cisco Aironet WLAN系列AP的瘦胖模式转换
  7. python爬虫淘宝比价
  8. 如何去除Html中超链接默认下划线
  9. python-while-函数
  10. java弹弹球实验报告_Java程序设计实验报告2(弹球游戏)1