当ant-design-pro设置远程调后端服务,例如spring boot提供的http服务,会存在跨域问题,包如下错误:
已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/demo-app/api/login/account 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')
springboot配置解决
package com.example.demo.system.core.config; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Interceptor - 跨域拦截器 * @author zhaikaiyun * @date 2020/4/4 15:46 * @description */ public class CorsInterceptor extends HandlerInterceptorAdapter { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin")); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x_requested_with,x-requested-with,Authorization,Content-Type,token"); response.setHeader("Access-Control-Allow-Credentials", "true"); return true; } }
package com.example.demo.system.core.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** * @author zhaikaiyun * @date 2020/4/4 15:00 * @description */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Bean public CorsInterceptor corsInterceptor() { CorsInterceptor corsInterceptor = new CorsInterceptor(); return corsInterceptor; } @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(corsInterceptor()) .addPathPatterns("/**"); } }