CORS,即Cross-origin resource sharing
,跨域资源共享,常用于帮助浏览器实现向不同的域名发送请求的功能。
浏览器为了安全着想,采用了同源策略(即url协议、域名、端口中任何一个不一样,就认定是跨域的)。默认是不允许js向不同的域名请求资源的,这样可能发生CSRF攻击。例如B域名有个删除数据的接口,用户登录了B域名后,关闭网页,当然一般情况cookie会在浏览器保留一段时间,如果用户在访问A域名时,A域名在网页上面悄悄向B域名发送删除请求,如果浏览器没有限制,而B域名的cookie也确实存在,则会造成严重后果。
既然后果很严重,为什么还需要CORS
呢,一是前端可能需要向不同的域名获取资源,二是随着前后端分离的发展,前端和后端域名如果不同,也许要跨域,如果相同,那运维就要多加配置去让两者在同一个域名下了,增加维护成本。
需要注意的是,开启CORS
后,会有一定的风险,*尽量不要将Access-Control-Allow-Origin
设置为允许所有来源,即’‘**,另外,前端一定要做好数据的验证,对于用于的输入,不要直接拿来作为html元素或者script片段进行执行