众所周知出于安全的考虑,浏览器有个“同源策略 ”,对于不同源的站点之间的相互请求会做限制(注意:跨域限制是浏览器行为,不是服务器行为)。
同源的要求:所谓同源是指域名(或IP)、协议、端口都相同。
浏览器和服务器的合作判定跨域步骤如下:
1、浏览器先根据同源策略对前端页面和后台交互地址做匹配,若同源,则直接发送数据请求。若不同源,则发送跨域请求。
2、服务器解析程序收到浏览器跨域请求后,根据自身配置返回对应文件头,若未配置过任何允许跨域,则文件头里不包含Access-control-Allow-origin字段。若配置过域名,则返回Access-control-Allow-origin + 对应配置规则里的域名的方式。
3、浏览器根据接受到的http文件头里的Access-Control-Allow-origin字段做匹配,若无该字段,说明不允许跨域,若有该字段,则对字段内容和当前域名做对比,如果同源,则说明可以跨域,浏览器发送请求。如果不同源,则说明该域名不可跨域,不发生请求。