标签:String 配置 springframework 跨域 import config public SpringBoot
方式一:使用过滤器
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class WebConfig { // 过滤器跨域配置 @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); // 允许跨域的头部信息 config.addAllowedHeader("*"); // 允许跨域的方法 config.addAllowedMethod("*"); // 可访问的外部域 config.addAllowedOrigin("*"); // 需要跨域用户凭证(cookie、HTTP认证及客户端SSL证明等) //config.setAllowCredentials(true); //config.addAllowedOriginPattern("*"); // 跨域路径配置 source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } }
方式二:实现 WebMvcConfigurer,重写 addCorsMappings 方法
import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { // 拦截器跨域配置 @Override public void addCorsMappings(CorsRegistry registry) { // 跨域路径 CorsRegistration cors = registry.addMapping("/**"); // 可访问的外部域 cors.allowedOrigins("*"); // 支持跨域用户凭证 //cors.allowCredentials(true); //cors.allowedOriginPatterns("*"); // 设置 header 能携带的信息 cors.allowedHeaders("*"); // 支持跨域的请求方法 cors.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS"); // 设置跨域过期时间,单位为秒 cors.maxAge(3600); } // 简写形式 @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") //.allowCredentials(true) //.allowedOriginPatterns("*") .allowedHeaders("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .maxAge(3600); } }
方式三:使用 @CrossOrigin 注解
@RestController @RequestMapping("/client") // @CrossOrigin public class HelloController { @CrossOrigin @GetMapping("/hello") public Result hello() { return Result.success(); } @RequestMapping(value = "/test", method = RequestMethod.GET) public Result test() { return Result.fail(); } }
CrossOrigin源码解析
// @CrossOrigin 源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface CrossOrigin { /** @deprecated */ @Deprecated String[] DEFAULT_ORIGINS = new String[]{"*"}; /** @deprecated */ @Deprecated String[] DEFAULT_ALLOWED_HEADERS = new String[]{"*"}; /** @deprecated */ @Deprecated boolean DEFAULT_ALLOW_CREDENTIALS = false; /** @deprecated */ @Deprecated long DEFAULT_MAX_AGE = 1800L; @AliasFor("origins") String[] value() default {}; @AliasFor("value") String[] origins() default {}; String[] originPatterns() default {}; String[] allowedHeaders() default {}; String[] exposedHeaders() default {}; RequestMethod[] methods() default {}; String allowCredentials() default ""; long maxAge() default -1L; }
vuecli+axios 测试案例
<template> <div class="main"> <div class="button-group"> <button class="button" @click="handleGet('/client/hello')">hello</button>| <button class="button" @click="handleGet('/client/test')">test</button>| </div> </div> </template> <script> import axios from '../../node_modules/axios' let http = axios.create({ baseURL: 'http://localhost:9090', timeout: 1000 * 5 }) // 跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等) 这个最好是与后端的 allowCredentials 保持一致 // http.defaults.withCredentials = true export default { methods: { handleGet(url) { http({ url }).then(res => { console.log(res.data) }) } } } </script>
标签:String,配置,springframework,跨域,import,config,public,SpringBoot 来源: https://www.cnblogs.com/mask-xiexie/p/16318132.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。