CORS:Cross-Origin Resource Sharing
Same-origin Policy
在一个浏览器中访问的网站不能访问另一个网站中的数据,除非这两个网站具有相同的Origin,也即是拥有相同的协议、主机地址以及端口。一旦这三项数据中有一项不同,那么该资源就将被认为是从不同的Origin得来的,进而不被允许访问。
只能访问同源资源,不能访问非同源资源,否则被拒绝。
客户端不需要更改任何数据访问逻辑,一般是服务器解决。所有的一切工作都是在服务端及浏览器之间自动完成的通过
后端:
<!--在spring配置文件中配置--> <!--支持跨域--> <mvc:cors> <mvc:mapping path="/**" allowed-origins="http://localhost:83" allowed-methods="GET, PUT,OPTIONS,POST,DELETE" allow-credentials="true" max-age="3600" /> </mvc:cors> <!-- 浏览器会向所请求的服务器发起两次请求,第一次是浏览器使用OPTIONS方法发起一个预检请求,第二次才是真正的异步请求,第一次的预检请求获知服务器是否允许该跨域请求:如果允许,才发起第二次真实的请求;如果不允许,则拦截第二次请求。 allowed-origins: 允许的远程 allowed-methods: 允许的请求方式 max-age: 用来指定本次预检请求的有效期,单位为秒,在此期间不用发出另一条预检请求 allow-credentials: 请求是否带cookie信息 -->携带cookie的目的:当用户登录后,web服务器会产生认证cookies,并通过http响应的set-cookie发送给客户端,用于对用户随后的请求检查和验证。用户在试图访问站点中需要认证的资源时,服务器会检查用户是否提供了认证cookie
前端:
axios.defaults.withCredentials = true;
因为,axios和ajax请求不会自动携带cookie信息,需要配置该参数,携带cookie请求服务器欢迎各位大佬进行指正批评!!