Plaintext GET / HTTP/1.1 Origin: http://localhost:8601
伺服器接到允诺推论那个
Plaintext Access-Control-Allow-Origin:http://localhost:8601 Plaintext Access-Control-Allow-Origin:*化解布吕马的形式:
1、JSONP
透过script条码的src特性展开布吕马允诺,假如伺服器端要积极响应文本则具体来说加载允诺模块callback的值,callback是两个反弹表达式的中文名称,伺服器端加载callback的值后将积极响应文本透过调用callback表达式的形式说允诺方。如下表所示图:
2、添加积极响应头
伺服器端在积极响应头加进
Access-Control-Allow-Origin:3、透过nginx全权布吕马
由于伺服器端之间没有布吕马,应用程序透过nginx去访问布吕马地址。
1)应用程序先访问
http://192.168.101.10:8601 nginx提供的地址,进入页面2)此页面要布吕马访问
http://192.168.101.11:8601 ,不能直接布吕马访问http://www.baidu.com:8601 ,而是访问nginx的两个同源地址,比如:
http://192.168.101.11:8601/api ,透过
http://192.168.101.11:8601/api 的全权去访问http://www.baidu.com:8601。这样就实现了布吕马访问。
应用程序到
http://192.168.101.11:8601/api 没有布吕马nginx到http://www.baidu.com:8601透过伺服器端通信,没有布吕马。
我们准备使用方案2化解布吕马难题。在文本管理的api工程config包下编写GlobalCorsConfig.java,
或直接从课程资料/项目工程下拷贝,
代码如下表所示:
Javapackage com.xuecheng.system.config; import org.springframework.context.annotation.Bean; importorg.springframework.context.annotation.Configuration;import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; importorg.springframework.web.filter.CorsFilter;/** * @description 布吕马过虑器 * @author Mr.M * @date2022/9/7 11:04 *@version 1.0 */ @Configuration public class GlobalCorsConfig { /** * 允许布吕马调用的过滤器 */ @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); //允许白名单域名展开布吕马调用 config.addAllowedOrigin(“*”); //允许跨越发送cookie config.setAllowCredentials(true); //放行全部原始头信息config.addAllowedHeader(“*”); //允许所有允诺形式布吕马调用 config.addAllowedMethod(“*”); UrlBasedCorsConfigurationSource source =new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration(“/**”, config);return new CorsFilter(source); } }此配置类实现了布吕马过虑器,在积极响应头加进
Access-Control-Allow-Origin。重启系统管理服务,前端工程可以正常进入http://localhost:8601,观察应用程序记录,成功化解布吕马。