为什么Jetty的跨源过滤器会导致服务器崩溃?

时间:2016-11-05 21:50:22

标签: jetty same-origin-policy

按照http://www.eclipse.org/jetty/documentation/current/cross-origin-filter.html的说明,为了在jetty-8.1.18.v20150929(与BaseX 8.5捆绑在一起)上启用跨源请求,我下载了jetty-servlets-8.1.18.v20150929.jar,并将其放在WEB-INF / lib中

另外,在web.xml中,我添加了:

  <filter>
    <filter-name>cross-origin</filter-name>
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
    <init-param>
      <param-name>allowedOrigins</param-name>
      <param-value>*</param-value>
    </init-param>
    <init-param>
      <param-name>allowedMethods</param-name>
      <param-value>GET,POST,OPTIONS</param-value>
    </init-param>
    <init-param>
      <param-name>allowedHeaders</param-name>
      <param-value>*</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

但是,这会导致Jetty在启动时崩溃。我错过了什么?

1 个答案:

答案 0 :(得分:0)

Jetty 8中不存在该类。它会暂停启动,因为您引用了一个无法找到/加载/实例化的类。

编写自己的CrossOriginFilter,完成您需要它做的事情。

确保它支持:

  • 基于Servlet 3.0
  • 异步支持的标记
  • AsyncContext Aware
  

注意:不要从Jetty 9(您尝试使用的版本)复制/粘贴版本,因为它也支持Servlet 3.1中的功能,但在Jetty 8中不起作用。