跨域-------------同源策略

在前端开发中,经常遇到"跨域"的问题,以下的文章将 探讨一下为什么会有"跨域"问题的出现,和所谓的"同源策略"


同源策略

1995 年由 Netscape 公司提出,之后被其他浏览器厂商采纳。同源策略只是一个规范,并没有指定其具体的使用范围和实现方式,各个浏览器厂商都针对同源策略做了自己的实现。一些 web 技术都默认采取了同源策略,这些技术范围包括但不限于SilverlightAdobe FlashAdobe AcrobatDomXMLHttpRequest

为了保证使用者信息的安全,防止恶意网站篡改用户数据--------假设没有同源策略,那么我在A网站下的cookie就可以被任何一个网站拿到;那么这个网站的所有者,就可以使用我的cookie(也就是我的身份)在A网站下进行操作-------同源策略可以算是 web 前端安全的基石,如果缺少同源策略,浏览器也就没有了安全性可言。

非同源的网站之间

  • 无法共享 cookie, localStorage, indexDB
  • 无法操作彼此的 dom 元素
  • 无法发送 ajax 请求
  • 无法通过 flash 发送 http 请求
  • 其他

跨域

同源策略做了很严格的限制,但是在实际中,又确实地方需要突破同源策略的限制,也就是我们常说的跨域


同源策略最早被提出的时候,为的就是防止不同域名的网页之间共享 cookie,但是如果两个网页的一级域名是相同的,可以通过设置 document.domain来共享 cookie。

study.cn/json/jsonp/jsonp.html
 请求地址 形式 结果
 http://study.cn/test/a.html同一域名,不同文件夹 成功
 http://study.cn/json/jsonp/jsonp.html同一域名,统一文件夹 成功
 http://a.study.cn/json/jsonp/jsonp.html不同域名,文件路径相同 失败
 http://study.cn:8080/json/jsonp/jsonp.html 同一域名,不同端口 失败
 https://study.cn/json/jsonp/jsonp.html 同一域名,不同协议 失败

 

 

 

 

 

 


jsonp的产生:

1.AJAX直接请求普通文件存在跨域无权限访问的问题,不管是静态页面也好.

2.不过我们在调用js文件的时候又不受跨域影响,比如引入jquery框架的,或者是调用相片的时候

3.凡是拥有scr这个属性的标签都可以跨域例如<script><img><iframe>

4.如果想通过纯web端跨域访问数据只有一种可能,那就是把远程服务器上的数据装进js格式的文件里.

5.而json又是一个轻量级的数据格式,还被js原生支持

6.为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback 参数给服务端,


前端平时开发的过程中,解决跨域问题的集中方案请移步-------https://blog.csdn.net/chjj0904/article/details/78752792



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值