tomcat容器提供的cors过滤器没有在aws弹性beanstalk上的Tomcat8中运行

时间:2015-01-30 04:36:30

标签: tomcat cors elastic-beanstalk

我在aws弹性beanstalk安装上运行一个Tomcat驻留的web应用程序。

我尝试通过将此添加到我的web.xml来激活Tomcat容器提供的CORS过滤器(org.apache.catalina.filters.CorsFilter):

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
      <param-name>cors.allowed.origins</param-name>
      <param-value>*</param-value>
    </init-param>
    <init-param>
      <param-name>cors.allowed.methods</param-name>
      <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

我有一个来自不同来源的js客户端试图对此实例进行REST API调用。正如预期的那样,Chrome会插入一个OPTIONS请求,但服务器拒绝使用没有CORS标头的401 - 我认为这表明CORS过滤器没有运行。

如何判断它是否正在运行?

我尝试创建并运行一个小过滤器,除了运行时记录任何内容,以查看是否可以通过这种方式激活任何过滤器。它的代码在这里:

package org.sunspec.osparc.config;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;

@Component
public class OrderingFilter implements Filter {
    private String _name;
    public void init(FilterConfig config) {
        _name = config.getInitParameter("name");
    }
    public void doFilter(ServletRequest request,
                         ServletResponse response,
                         FilterChain chain)
       throws IOException, ServletException {
        System.out.println("Running " + _name);
        chain.doFilter(request, response);
        System.out.println("Finished running " + _name);
    }
    public void destroy() {}
}

...它在web.xml中以相同的方式配置...但catalina.out中没有输出。

所以我想我的问题是,你如何在Tomcat中运行过滤器?有没有关于Elastic Beanstalk的东西让它与众不同?

提前感谢您的帮助......

0 个答案:

没有答案