【问题标题】:Having issue with CORS filterCORS 过滤器有问题
【发布时间】:2017-05-08 01:26:35
【问题描述】:

我在互联网上搜索了一整天。这是我在 web.xml

中包含的内容
<filter>
    <filter-name>cors</filter-name>
    <filter-class>org.sampe.service.context.filter.CorsFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

这里是 Cors 过滤器 (CorsFilter.java)

@Component
public class CorsFilter implements Filter {

   @Override
   public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
        throws IOException, ServletException {
      HttpServletResponse response = (HttpServletResponse) res;
      response.setHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
      response.setHeader("Access-Control-Max-Age", "3600");
      response.setHeader("Access-Control-Allow-Headers",
            "Origin, X-Requested-With, Content-Type, Accept, Authorization");
      chain.doFilter(req, res);
   }  

   @Override
   public void init(FilterConfig filterConfig) {}

   @Override
   public void destroy() {}
}

它在邮递员上运行良好。但是我在进行 ajax 调用或使用 angular 2 时遇到问题。我也查看了这些问题。 solved stackoverflow answer我的怎么了。

【问题讨论】:

  • 您在使用 ajax / angular2 调用时看到什么错误?
  • 这与 Angular 无关
  • 我在控制台中收到“预检响应无效(重定向)”错误

标签: java spring cors


【解决方案1】:

这与角度无关。 问题是您的 Spring API 不允许跨源请求。

为了让您的 API 可以跨源访问,您可以在 REST 控制器上设置注释。

我想说的是,您可以使用 @CrossOrigin 注释您的休息控制器,以便它允许跨源访问。

希望这会有所帮助。 赞一个

【讨论】:

【解决方案2】:

您必须使用以下注释来注释您的 Cors 过滤器:
@Order(Ordered.HIGHEST_PRECEDENCE)
@Order 定义带注释组件的排序顺序。默认值为Ordered.LOWEST_PRECEDENCE,表示最低优先级(输给任何其他指定的订单值)。

【讨论】:

    猜你喜欢
    • 2015-05-01
    • 2015-11-06
    • 2023-03-15
    • 2014-08-14
    • 2021-07-13
    • 2013-06-20
    • 1970-01-01
    • 2012-12-08
    • 2011-08-04
    相关资源
    最近更新 更多