今天是过完春节以后的第二周啦,而我好像终于回到正常工作的状态了呢,因为突然间就对工作产生了厌倦的情绪,Bug就像无底洞一样吞噬着我的脑细胞。人类就像一颗螺丝钉一样被固定在整部社会机器上,除了要让自己看起来像个正常人一样,还要拼命地让所有人都像个正常人一样。过年刚经历过被催婚的我,面对全人类近乎标准的“幸福”定义,大概就是我此刻这种状态。其实,除了想自己定义“幸福”以外,我还想自己定义“问题”,因为,这样就不会再有“Bug”了。言归正传,今天我想说的是前端跨域这个话题,相信读完这篇文章,你就会明白,这个世界上太多太多的问题,都和你毫无瓜葛。
故事缘起
年前被安排去做一个GPS相关的需求,需要通过百度地图API来计算预计到达时间,这并不是一个有难点的需求,对吧?就在博主为此而幸灾乐祸的时候,一个非常醒目的错误出现在Chrome的控制台中,相信大家都见过无数次啦,大概是说我们的请求受到浏览器的同源策略的限制。那么,第一个问题,什么是同源策略呢?我们知道,一个URL通常有以下几部分组成,即协议、域名、端口和请求资源。由此我们就可以引申出同源的概念,当协议、域名和端口都相同时,就认为它们是在同一个域下,即它们同源。相反地,当协议、域名和端口中任意一个都不相同时,就认为它们在不同域下,此时就发生了跨域。按照排列组合,我们可以有以下常见的跨域场景:
URL | 说明 | 是否允许跨域 |
---|---|---|
www.abc.com/a.js vs www.abc.c |