浏览器的同源策略

目录

前言

一、同源的含义

二、同源策略的目的

总结

前言

同源策略是由Netscape公司于1995年引入浏览器的重要的安全策略。目前,所有支持JavaScript的浏览器都实行这个政策。

它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。

一、同源的含义

所谓同源,就是指请求的资源和目前文件来源,有三个相同:

  • 协议相同
  • 端口号相同
  • 域名相同

举个例子,网址:http://www.company.com/dir/page.html ,它的协议是http://,域名是www.company.com ,端口是80(在没有指定端口号时,默认端口号是80)。下表是与该网址的源进行对比的示例:

URL

结果

原因

http://www.company.com/dir2/page.html

同源

只有路径不同

http://www.company.com/dir/inner/other.html

同源

只有路径不同

https://www.company.com/dir/page.html

非同源

协议不同

http://www.company.com:8089/dir/page.html

非同源

端口号不同

http://company.com/dir/page.html

非同源

域名不同

注:IE未将 端口号 加入到同源策略的组成部分之中

补充:

URL由三部分组成:协议类型、主机名和路径及文件名。

一般地址格式排列为(带[]的为可选项):protocol://hostname[:name]/path/[;parameters][?query][#fragment]

  • protocol(协议):指定的传输协议。
  • hostname(主机名):是指存放资源的服务器域名系统(DNS)主机名或IP地址。
  • port(端口号):整数,可选项,省略时使用方案的默认端口,各种传输协议都有默认的端口号,如http的默认端口号是80。
  • path(路径):由零或多个 "/" 符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
  • ;parameters(参数):是用于指定特殊参数的可选项。
  • ?query(查询):可选项,用于给动态网页传递参数,可有多个参数,用 "&" 符号隔开,每个参数的名和值用 "=" 符号隔开。
  • fragment:信息片段,可选项,字符串,用于指定网络资源中的片段。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。

二、同源策略的目的

在浏览器中,保证访问数据安全的基础就是同源策略。同源策略的目的是保证用户信息的安全,防止恶意的网站窃取数据。

如果非同源,有以下三种行为受到限制:

  • Cookie、LoaclStirage和IndexDB无法读取;
    • 为了防止恶意网站通过js获取用户其他网站的cookie。
  • DOM无法获得;
    • 因为恶意网站可以通过iframe打卡银行界面,如果可以获取DOM就相当于可以获取整个银行界面的信息。
  • AJAX请求不能发送。
    • 更加准确地说是跨域请求能发出去,服务器端能收到请求并正常返回结果,但是结果被浏览器拦截了。

总结

从上面可以看出,同源策略确实可以说是网络安全的基础。但是我们完成前后端分离的项目时,也因为浏览器同源策略的限制,导致我们在不同源之间通信,出现了浏览器接收不到服务端返回数据的问题,因此,还需要学习解决跨域的方法,在之后的文章中再来一起学习。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值