浏览器同源策略,听说过么?

  • 时间:2021-03-20 20:48 作者:华为云开发者社区 来源: 阅读:635
  • 扫一扫,手机访问
摘要:摘要:同源策略就是指必需在同一个协议,域名,端口号下,而且三者必需一致的。本文会从以下几个方面讲述同源策略:第一点 what:什么是同源策略第二点 why:为什么需要同源策略第三点 how:如何处理经典的跨域问题什么是同源策略什么是同源策略呢?通常一个概念出来之后,我会从生活的实际例子找到解析,你可

摘要:同源策略就是指必需在同一个协议,域名,端口号下,而且三者必需一致的。

本文会从以下几个方面讲述同源策略:

第一点 what:什么是同源策略

第二点 why:为什么需要同源策略

第三点 how:如何处理经典的跨域问题

什么是同源策略

什么是同源策略呢?通常一个概念出来之后,我会从生活的实际例子找到解析,你可以想象一下,如果你们家的房子,是不是不允许陌生人进入,假如可以随意进入,那么久有可能被盗了,那么这个时候,锁头和钥匙就出现了为了保证家的安全。

所以我们引出浏览器的同源策略,就是指必需在同一个协议,域名,端口号下,而且三者必需一致的。这个时候,我们就说是同源。

举个例子:

http:// 是我们所说的协议。

www.angular.cn 是我们所说的域名。

80 表示端口号。

所以就会牵引出一个问题,不同源的数据交互问题,

假如是以下两个链接交互数据,可以通过同源策略的检测:

而假如是以下这样的链接交互数据,则不能通过同源策略的检测:

有哪些是不受同源策略限制

页面上的链接,比方 a 链接。

重定向。

表单提交。

跨域资源的引入,比方:script, img, link, iframe。

处理跨域问题

既然有同源策略的限制,那么就会产生跨域问题,就是指不同源的脚本在数据交互的时候,会报错,这个过程就是跨域。

那么有什么处理方案?

JSONP 处理跨域

CORS 处理跨域

总的来说,这两个比较经典,工作中比较常用,所以先讲讲上面的方案。

JSONP 处理跨域

什么是 JSONP,举个例子,就是 a.com/jsonp.html 想要获取 b.com/main.js 的数据,这个时候因为浏览器同源策略,是获取不到数据的,所以我们可以在 a.com/jsonp.html 创立一个 script 脚本,http://b.com/main.js?callback...。在main.js中调用这个回调函数xxx,并且以JSON数据形式作为参数传递,完成回调。我们来看看代码:

存在以下几点问题:

只能使用 GET 请求方式,无法使用 POST 请求方式。

可能被注入恶意代码,篡改页面内容,可以采用字符串过滤来规避此问题。

CORS 处理跨域

CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing)。

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

刚才的例子中,在b.com里面增加响应头公告允许a.com的访问,代码:

而后a.com即可以用ajax获取b.com里的数据了。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
手机二维码手机访问领取大礼包
返回顶部