CORS:跨域资源请求的标准解决方法之前有一篇文章说我们经常会遇到跨域资源请求失败的情况,今天就来说说对应的解决方法。首先我们来看看解决跨域问题的方案。1.使用代理。原理:在跨域知识浏览器和服务器之间,可以使用一个自身前端不跨域的服务进行数据传输,这样可以避免直接向目标服务器指示资源请求时出现跨域问题。2.使用jsonp。原理是通过下载执行script标签,调用相应的函数来实现的,只能解决部分场景。3.使用iframe,使用window.name传参。不太明白。4.CORS定义和使用:是现代浏览器支持跨域资源请求最常用的方式。使用方法:一般后端人员在处理请求数据时,需要添加允许跨域的相关操作。对于简单请求和复杂请求,可以分为两种情况。对于简单的请求,浏览器会在请求头中添加origin字段,自动带上请求的来源信息。对于复杂的请求,浏览器会在发送正式请求前发送选项请求进行预验证。服务器会在响应消息中添加以下字段:Access-Control-Allow-Origin(必填):该字段用于通知浏览器服务器接受可以发送跨域AJAX请求的域,其值为AJAX请求头中浏览器自动添加的TheOrigin值,或者一个*号,表示可以接受任何域名请求;Access-Control-Allow-Credentials(可选):该字段用于告诉浏览器是否允许客户端向服务器发送cookie。默认情况下,CORS规范阻止跨域AJAX向服务器发送cookie,因此该字段的默认值为false。当你明确设置该字段的值为true时,意味着允许跨域AJAX向服务器发送cookies。发送饼干。Access-Control-Expose-Headers(可选):该字段用于向客户端公开可用的响应头;CORS规范规定客户端XMLHttpRequest对象的getResponseHeader()方法只能获取6个基本字段:*Cache-Control:表示响应后的缓存机制;*Content-Language:表示响应体的语言;*Content-Type:表示响应主体的MIME类型;*expires:表示文档的过期时间,不再缓存;*Last-Modified:表示文档的最后修改时间;*Pragma:用于包含具体的指令;但是当客户端想要获取额外的响应头字段时,服务端需要在该字段后定义对应的客户端可用字段获取响应头字段名。当然还有很多详细的场景,尤其是cookie的一些处理。但是总而言之,如果你作为前端,遇到这种跨域资源请求失败的问题,如果后端说他改不了,那他肯定是微服务入门级菜鸟了.
