视频笔记来源:【零到全栈】5.5-前后端联调和CORS
CORS(Cross-Origin Resource Sharing),称为跨源资源共享,是浏览器针对JS脚本设计的一条规则,浏览器不允许网页的JS脚本去读取没有得到授权的跨源响应
跨源
对浏览器来说,一个源由协议+域名+端口组成,只要它们有一个不一样,就是跨源
当跨源请求的时候,浏览器会发送请求,携带一个请求头origin说明请求来自哪个源,后端处理后会返回响应,浏览器收到响应后,会检查响应头中是否携带Access-Control-Allow-Origin,且携带的源会不会允许发起请求的源来获取响应的结果,若不符合要求,浏览器会不允许获取响应
一般会在后端开一个CORS中间件,对请求和响应统一加上许可
CORS预检
前端发送比较复杂的请求前(如POST请求),浏览器会自动发一个OPTIONS请求预检(preflight),向后端请求是否可以发送该请求
后端需要在CORS中间件下指明允许的方法allow_methods和允许的请求头allow_headers(若不写则一些罕见的headers不会放行)