同源策略
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能
所谓同源是指: 协议,域名,端口都相同,就是同源, 否则就是跨域
以http://www.it666.com:80/index.html为例:
协议: http/https/...
一级域名: it666.com
二级域名: www
端口号: 80/3306/...
判断是同源还是跨域
// 协议+一级域名+二级域名+端口号都相同, 所以同源
http://www.it666.com:80/index.html
http://www.it666.com:80/detail.html
// 协议不同, 所以不同源, 是跨域
http://www.it666.com:80/index.html
https://www.it666.com:80/index.html
// 一级域名不同, 所以不同源, 是跨域
http://www.it666.com:80/index.html
http://www.itzb.com:80/index.html
// 二级域名不同, 所以不同源, 是跨域
http://www.it666.com:80/index.html
http://edu.it666.com:80/index.html
// 端口号不同, 所以不同源, 是跨域
http://www.it666.com:80/index.html
http://www.it666.com:8090/index.html
同源策略的影响:
在同源策略下, 浏览器只允许Ajax请求同源的数据, 不允许请求不同源的数据
但在企业开发中, 一般情况下为了提升网页的性能, 网页和数据都是单独存储在不同服务器上的
这时如果再通过Ajax请求数据就会拿不到跨域数据
例如:
通过本地服务器打开某html,向本地服务器某个php发送请求:
当前的网页地址: http://127.0.0.1:80/jQuery/Ajax/19-%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5.html
请求的资源地址: http://127.0.0.1:80/jQuery/Ajax/19-SameOriginPolicy.php
此时,能正常获取到资源
但是,如果通过浏览器直接打开该html,向本地服务器发送请求:
当前的网页地址: http://127.0.0.1:63342/jQuery/Ajax/19-%E5%90%8C%E6%BA%90%E7%AD%96%E7%95%A5.html
请求的资源地址: http://127.0.0.1:80/jQuery/Ajax/19-SameOriginPolicy.php
此时,不能获取到该资源