目录
1.什么是同源策略?
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
2.同源策略的使用条件
1.域名一致:URL 的主机(FQDN:Fully Qualified Domain Name 全称域名)一致
2.协议一致:Schema 一致。(schema就是database(数据库)的代名词。)
3.端口号一致
同源策略的保护对象不仅仅是 iframe 内的文档。比如,实现 Ajax 时所使用的 XMLHttpRequest 对象能够访问的 URL 也受到了同源策略的限制。
iframe详解:
网络异常,图片无法展示
|
网络异常,图片无法展示
|
3.同源策略的研究
准备两个页面
---------index.html
<html> <head> <title> 跨 frame 的读取试验 </title> <meta charset='utf-8'> </head> <body> <iframe name="iframe1" width="300" height="80" src="http://localhost/sop/iframe.html" > </iframe> <input type="button" onclick="go()" value=" 密码→ "> <script> function go() { try { var x = iframe1.document.form1.passwd.value; document.getElementById('out').innerHTML = x; } catch (e) { alert(e.message); } } </script> <span id="out"></span> </body> </html>
-------iframe.html
<html> <head> <meta charset='utf-8'> </head> <body> <form name="form1"> iframe 的内层 密码 <input type="text" name="passwd" value="password1"> </form> </body> </html>
此时,符合同源策略的情况是 [http://localhost/sop/]
编辑
如果我们将访问地址改为我们的IP去访问,就会报错。原因是:js代码只能读取同一个域下的代码。
编辑
如果我们将其改为 [http://192.168.0.107/sop/] ,如图,同样localhost就无法读取,必须要遵守同源策略。
编辑