- [] 跨域加载
- . 加载百度到当前域名网站内,会提示如下信息,表示百度被设置为禁止内嵌
- [ ]如果百度在其网站内部设置了恶意代码。。。
-
<iframe src="https://www.baidu.com" frameborder="0" scrolling="no" title="baidu"></iframe>
-
Refused to display 'https://www.baidu.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
- sandbox
- . <iframe>的安全属性,对其使用进行限制
- . script脚本不能执行
- . 不能发送ajax请求
- . 不能使用本地存储,即localStorage,cookie等
- . 不能创建新的弹窗和window
- . 不能发送表单
- . 不能加载额外插件比如flash等
-
类别 |
说明 |
"" |
启用所有限制条件 |
allow-same-origin |
允许将内容作为普通来源对待。如果未使用该关键字,嵌入的内容将被视为一个独立的源 |
allow-top-navigation |
嵌入的页面的上下文可以导航(加载)内容到顶级的浏览上下文环境(browsing context)。如果未使用该关键字,这个操作将不可用 |
allow-forms |
允许表单提交 |
allow-scripts |
允许脚本执行 |
- 同域-In/Same Domain
- . 协议相同
- . 域名相同
- . 端口相同
- 目的:保证用户信息的安全,防止恶意的网站窃取数据
- 非常必需;否则 Cookie 可以共享,互联网就毫无安全可言
- 可以简单理解为是同一个网站/域名/网站内部
- 跨域-Cross Domain
- . 不同的网站/域名
- . 默认情况下,仅仅支持同域页面加载,跨越加载会告警
- . 同域情况下,父窗口和子窗口可以互相通信;如果跨域,则无法通信
- [] 示例
- http://www.example.com/dir/page.html
- . 协议:http
- . 域名:www.example.com
- . 端口:80(默认端口,可以省略)
-
http://www.example.com/dir2/other.html:同源
http://example.com/dir/other.html:不同源(域名不同)
http://v2.www.example.com/dir/other.html:不同源(域名不同)
http://www.example.com:81/dir/other.html:不同源(端口不同)
https://www.example.com/dir/page.html:不同源(协议不同)
- 其它使用
- 当前页面可以访问加载页面的DOM和cookie
-
let iframe = document.getElementById("footer");
iframe.onload = function () {
let doc = iframe.contentWindow.document;
console.log(doc.getElementById('author').innerHTML);
console.log(document.cookie);
}