浏览器处理跨域的具体流程
浏览器处理跨域方式
跨域访问接口的时候浏览器是会去访问接口的,但是由于跨域的影响,返回来的数据无法被前端获取。
通过后端的解决方式
需要后端响应数据的时候,需要加入下面的响应头数据
Access-Control-Allow-Origin:获取请求头的Origin
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:POST, GET, PATCH, DELETE, PUT
Access-Control-Max-Age:3600
Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept
注意:一定要在进入后端流程前设置(一般在拦截器上),设置过于靠后可能被忽略(如过不了拦截器)而没有设置上。
原理(流程)本质是同源策略
浏览器是通过服务器端的响应头来开放跨域的。要想成功跨域,就需要在响应数据前设置上面那些响应头;告诉浏览器你接受跨域访问。浏览器就会将访问到的数据返回给前端处理;否则不将数据给前端。
注意:浏览器不管你跨域不跨域,都会访问对应的服务器端接口,最终要不要将后端返回的数据给前端处理取决于后端接不接受跨域访问(即是否设置了对应的响应头)
同源策略:非授权下,不同源的双方都无法读取对方的数据。
建议
不是在非常必要的时候,绝不接受跨域访问。