定义:
跨域(跨域资源共享),Cross-origin Resources Sharing [CORS ]它是浏览器的保护机制
只允许网页请求同一域名下的服务(协议域名端口都保持一致,即“同源策略”,若有一项不同,
那么就是跨域请求)
解决方法:
在前后端分离的项目中解决跨域问题可以从三种情况下手:
- 配置后端
浏览器是否启用跨域保护机制是根据后端的响应来决定的 —> 浏览器根据的是响应的access control allow origin响应头来决定的(若次字段值是 *,则 会允许所有的请求) 如果是同一个域名,那么浏览器就不会对这个域名下的请求进行跨域保护。根据后端程序的语言和库的不同,配置此响应头的方法也不同{Node.js和express中可选择添加,cors中间键,cors默认会允许所有跨域请求。若要限制指定域名,可以给它的配置项传递一个,字符串或者数组用于指定一个或多个允许跨域的域名}
- 配置前端
配置代理中转请求。因为跨域是浏览器的保护机制,若脱离浏览器发送请求,则它就不会受到跨域保护机制的影响,所有我们可以使用一个中转服务器来发送请求和接收响应。前端只需要请求这个中转服务器, 并保持和中转服务器的URL一致就可以了。一般的前端脚手架都支持配置代理(如:vite、create、react) 这样就避免了跨域问题
- 配置服务器(针对产品环境/开发服务器不支持代理的情况下)
可自己手动创建一个中转服务器来代理请求