关于跨域与同源,你造吗?
产品妹子脸憋的通红,一个劲儿的摇着头,委屈的小声说:“唉呀,前端开发说目前情况是产生了「跨域」问题,浏览器有「同源策略」保证安全性,突破不了,改动成本非常高,可是不改也不行啊,用户在线上反馈几天了,老大可生气了,我可怎么办啊,老大会不会以后不喜欢我了,呜呜呜”。
此时,正是我装逼的好时光,于是我一个箭(贱)步,跳到她面前,“哭毛啊,哥在这儿呢,好好说话~”。
「同源策略」「跨域」在前端开发(通常前端都是跟浏览器打交道哦,因为更靠近用户,更多的将后台数据展示给用户,所以叫前端)中,是很基本的常识,很多没做过前端开发的程序员其实也不是很了解这种策略和场景(注意,没有鄙视的意思,请不要乱扣帽子),更不用说很多产品同学,为了不再被忽悠,请听我九浅一深的解读。
先说iframe
首先说说iframe,iframe是html中的一个标签,它可以指定一个随意的Url地址,比如我写了个网页是www.a.com/index.html,内容如下:
iframe里面的src字段为www.qq.com,那这个网页打开之后,会看到腾讯网整个页面嵌入到了我写的这个index.html网页当中,iframe的意义非常简单,就是将一个Url地址嵌入到当前页面并展示出来。
你给远方的情郎写了一封情书,当把邮票贴在信封右上角的时候,信封为页面,邮票可以想象为一个iframe标签,它里面也描写很多内容(有山,有水,有人家)。
其中信封是在超市买的,邮票是在邮局买的,它俩生产厂家,品牌,材质,毫不相干,但组合在一起可以发挥作用。信封属于“超市”这个域,邮票属于“邮局”这个域。
有这样一种需求,一个网站有3个展示页面,每个页面都有一个评论区,那这个评论区可以封装为一个url,并用iframe嵌入到每个不同的页面当中去,全局复用一套评论区的代码,节省程序员,逻辑又好维护,只要一个人实现就可以了哦。
这就是iframe大概的用途,嵌入另一个页面,两个页面功能可以解耦和,不依赖对方而存在。
再说跨域
还是上面贴出来那一段简单代码,我已经写好了一个网页,跟腾讯网一模一样哦。
我动了坏心思,假设我有渠道能搞来流量,为啥我不在当前页面当中替换掉腾讯网的广告位置,而变成我的广告呢,靠这些流量不就把钱挣了嘛,而且用户也没什么感知,商业体验两不误,有没有任何的服务器和流量的花销。
于是我又开始改造代码了,争取能完成这个功能,分分钟走向人生巅峰呢~
这里在