我在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的东西让它与众不同?
提前感谢您的帮助......