前端同学李雷和后台同学韩梅梅分别在自己电脑上进行开发,后台接口写好的时候,李雷改动完就把前端代码上传到gitlab,然后在测试机上从gitlab上拉下来,然后在测试机上移动最新代码,最后回到本机刷新页面。有时候碰到网速不好的情况传个git传了半天,或者李雷刚上传完发现少写了一个单词,加上再传上一看尼玛单词又写错了。对于实时需要改动代码的李雷同学而言
另外一种方案是李雷和韩梅梅分别在自己电脑上进行开发,韩梅梅写完一个接口,李雷马上在本地调用接口进行请求,有需要改动的地方,改完按下F5,看到的就是最新的。perfect!
既然这样,为什么不选用方便快捷的后者呢。后者会遇到哪些问题?这里就要好好扯一下跨域了。
什么是跨域?
浏览器的同源策略限制了一个源(origin)中加载文本或脚本与来自其它源(origin)中资源的交互方式。如果两个页面的协议(protocol)、端口(如果指定)、和主机任一不相同,则他们就不是同源的,在他们之间进行请求则认为是跨域。
跨域的解决办法
跨域的解决方案主要有JSONP、改变domain、CORS等等,因为项目适用于使用CORS,所以我们在项目中使用此方案,这里也只讨论CORS。
CORS
CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。CORS背后的基本思想就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功还是失败。
换句话说,就是服务器在响应头里设置好允许哪些地址访问(通过Access-Control-Allow-Origin
设置),当浏览器收到服务端响应时,查看这个字段,如果包含请求方的地址或设置为了*
,则允许此次跨域。
那么,我们在项目里只需要在服务端设置好Access-Control-Allow-Origin
头,即可允许前端同学发起的请求跨域。
对于php而言,即设置:
header('Access-Control-Allow-Origin: *');
这样就能愉快的跨域了!
看到这里的时候,国存和昕晨一定是这个表情