-
前端发起一个http请求,请求头里面包括请求的地址和Referer(请求从哪儿来)
-
浏览器得到这个请求,因为有同源策略,所以去对比请求地址和Referer地址中的协议/主机/端口号,如果不一样,浏览器往这个http请求头中添加origin字段(即Referer地址中的协议/主机/端口号)
-
浏览器向服务器发送请求
-
服务器处理请求,并产生响应
如果请求头中没有origin说明不涉及跨域,服务器对此不作判断
如果请求头中有orgin字段,服务器根据可访问的域列表做出回应
- 列表中有该origin,在响应头中加入Access-Control-Allow-Origin信息
- 列表中没有该origin,不作处理
-
浏览器对http请求和响应做对比
- 涉及同源策略:看响应头中有没有Access-Control-Allow-Origin,没有报错
- 不涉及同源策略:直接处理
前端解决跨域问题的两种方法
- 关闭浏览器的同源策略。
- 使用代理访问服务器。 但是这两种方法都是暂时的,最终的解决还是需要后端对访问域做出许可。
如果理解有问题,请不吝赐教。