SpringCloud中如何解决跨域问题呢?
下文笔者讲述SpringCloud解决跨越问题的方法分享,如下所示
SpringCloud解决跨越问题的实现思路
方式1: 添加过滤器配置类,解决跨域问题 方式2: 添加一个Spring Bean,解决跨域问题例
添加过滤器配置类,解决跨域问题
package com.java265.config; import org.springframework.context.annotation.Configuration; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Configuration @WebFilter(filterName = "CorsFilter", urlPatterns = {"/*"}) public class CorsFilter implements Filter{ @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; // 响应标头指定 指定可以访问资源的URI路径 res.setHeader("Access-Control-Allow-Origin", req.getHeader("Origin")); // 指示的请求的响应是否可以暴露于该页面。当true值返回时它可以被暴露 res.setHeader("Access-Control-Allow-Credentials", "true"); //响应标头指定响应访问所述资源到时允许的一种或多种方法 res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); //设置 缓存可以生存的最大秒数 res.setHeader("Access-Control-Max-Age", "3600"); //自定义 可以被访问的响应头 res.setHeader("Access-Control-Allow-Headers", "*"); chain.doFilter(request, response); } @Override public void destroy() { } }
使用Spring Bean方式,解决跨域问题
/** * 解决跨域问题 * * @return */ @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); // 允许cookies跨域 config.setAllowCredentials(true); // 允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如http://xxxx:8080 ,以降低安全风险。。 config.addAllowedOrigin("*"); // 允许访问的头信息,*表示全部 config.addAllowedHeader("*"); // 预检请求的缓存时间(秒),即在这个时间段里,相同的跨域请求不会再预检 config.setMaxAge(18000L); // 允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等 config.addAllowedMethod("*"); // 允许请求方法 config.addAllowedMethod("HEAD"); config.addAllowedMethod("GET"); config.addAllowedMethod("PUT"); config.addAllowedMethod("POST"); config.addAllowedMethod("DELETE"); config.addAllowedMethod("PATCH"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。