跨源资源共享 (CORS)(或通俗地译为跨域资源共享)是一种基于 HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它 origin(域,协议和端口),使得浏览器允许这些 origin 访问加载自己的资源。
举例
运行在 https://domain-a.com 的 JavaScript 代码使用 XMLHttpRequest 来发起一个到 https://domain-b.com/data.json 的请求。出于安全性,浏览器限制脚本内发起的跨源HTTP请求,这就返回了CORS错误。
跨源域资源共享(CORS)机制允许 Web 应用服务器进行跨源访问控制,从而使跨源数据传输得以安全进行。
有些请求(非简单请求)会出发CORS预检,浏览器使用OPTIONS方法发起,获得此服务端是否允许该跨源请求,服务器确认允许后才发送实际的HTTP请求。
如何应对跨域问题
后端解决
注:待实践后完善
利用预检获知服务端对跨源请求支持的HTTP方法。再以实际的HTTP请求方法发送那个真正的请求
优点:
- 前端方便
- 一劳永逸
- 开发环境和正式环境都可以使用
缺点:
- 后端稍麻烦
前端解决
开发环境使用webpack的proxy解决,正式环境使用Nginx反向代理
参考资料