跨域
CORS(跨域资源共享)的定义
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS
(1)脱离浏览器,服务器之间是不存在跨域问题的
首先对齐一个共识,同源策略
是浏览器的安全策略,脱离浏览器不存在跨域问题,相同的配置下, 两个 服务器之间通信是不会存在跨域问题的,所以【跨域请求】被拒绝这个动作,是浏览器和服务端配合完成的,但主要的控制端还是【浏览器】。
(2)简单请求 和 非简单请求
在 CORS ,无论是哪种请求,都会被发送到服务端,只不过有以下区别:
1)对于简单请求,浏览器会屏蔽服务端的响应,这一点你可以用 node 起个服务来验证。
2)对于非简单请求,浏览器会先发送一个 OPTIONS 请求去获取服务端的响应头,看服务端是否有配置相关的 CORS 策略来允许本次跨域请求,如果满足 CORS 的规则,浏览器就会继续发送真实的请求,否则就阻断掉
所以其实并不是 服务端 真正拒绝的跨域请求,是 浏览器 遵循 CORS 的规则阻断了真实的请求。你只需要理解到对于跨域请求,真正的 逻辑控制端 是在浏览器,只是浏览器支持 CORS 让服务端可以通过 响应头 来支持跨域而已。