同源策略、跨域

一、同源策略

1、先来说说什么是源

对于以下的这段URL

http://user:[email protected]:80/dir/index.html?uid=1#ch1
  • http:// 协议名
  • user:pass 登录信息
    -www.company.com 域名(或ip地址、服务器地址)
    -80 端口号,http协议默认端口号为80端口,默认情况下没有显示,https默认端口号443,ftp默认21
  • /dir/index.html 带层次的文件路径
  • uid=1 查询字符串
  • #ch1片段标识符(hash)
    源(origin)就是协议、域名和端口号。
    以上url中的源就是:http://www.company.com:80
    若地址里面的协议、域名和端口号均相同则属于同源。

以下是相对于 http://www.a.com/test/index.html 的同源检测

  • http://www.a.com/dir/page.html ----成功
  • http://www.child.a.com/test/index.html ----失败,域名不同
  • https://www.a.com/test/index.html ----失败,协议不同
  • http://www.a.com:8080/test/index.html ----失败,端口号不同

2.什么是同源策略?

同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。所以a.com下的js脚本采用ajax读取b.com里面的文件数据是会报错的。

  • 不受同源策略限制的:
    1、页面中的链接,重定向以及表单提交是不会受到同源策略限制的。
    2、跨域资源的引入是可以的。但是js不能读写加载的内容。如嵌入到页面中的