当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("/**");
}
}