【发布时间】:2018-01-01 23:00:53
【问题描述】:
我有一个带有 RestController、自定义安全过滤器和一个 Angular 2 应用程序的 Spring Boot 应用程序,它从 spring 服务请求数据。
由于 Access-Control-Allow-Origin 问题,我有一个设置标题的过滤器。
如果我将 localhost:4200 调用到 localhost:8080,这可以正常工作,但从 localhost:4200 到某些 ip xx.xx.xx.xx:8080 则不起作用。
那么有人有想法吗?
这是我的过滤器:
@Component
public class MyCorsFilter implements Filter {
public MyCorsFilter() {
System.out.println("init filter corsssss");
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}
【问题讨论】:
-
这似乎只是一个“本地主机”行为,如果我在服务器上部署了 spring boot 应用程序和 angular 应用程序,那么过滤器工作正常并且设置了访问控制标头。跨度>
标签: angular spring-boot