前端跨域
1.跨域概念
首先,跨域是浏览器行为!不要说自己是前端不管跨域事情了!很丢人的!
浏览器和服务器的合作判定跨域步骤如下:
1、浏览器根据同源策略(是否为同域名同协议同端口)对前端页面和后台交互地址做匹配,若同源,则直接发送数据请求。若不同源,则发送跨域请求。
2、服务器解析程序收到浏览器跨域请求后,根据自身配置返回对应文件头,若未配置过任何允许跨域,则文件头里不包含Access-control-Allow-origin字段。若配置过域名,则返回Access-control-Allow-origin + 对应配置规则里的域名的方式。
3、浏览器根据接受到的http文件头里的Access-Control-Allow-origin字段做匹配,若无该字段,说明不允许跨域,若有该字段,则对字段内容和当前域名做对比,如果同源,则说明可以跨域,浏览器发送请求。如果不同源,则说明该域名不可跨域,不发生请求。
在跨域过程中,服务器实际上已经进行了返回,而浏览器端会根据同源策略阻止返回,所以跨域是浏览器行为。
2.成熟的解决方法
只有CORS和反向代理,不要扯别的落后方法了!
CORS:修改服务器端的字段,允许某一个源的服务器进行请求访问。
反向代理:因为Nginx不是浏览器,而是服务端通信,后者不用遵守同源规定,自然不存在跨域问题