在jetty-runner下运行的web-app中设置Web服务器头(Access-Control-Allow-Origin)

时间:2014-11-17 01:30:32

标签: jetty cors plantuml

我正在使用plantuml.war在服务器上运行jetty-runner。我需要为CORS启用Access-Control-Allow-Origin标头,但我发现这样做的方式指向web.xmloverride-web.xml,我认为这是我无法控制的,因为我是在jetty-runner中使用第三方网络应用程序。我看不到在jetty.xml中设置它的方法。

有没有办法在jetty-runner中启用Access-Control-Allow-Origin标题?

1 个答案:

答案 0 :(得分:0)

免责声明:我得到了有关此问题的详细信息(不是我的答案100%)。我只在Windows 7和Windows 8下使用Java 7进行了测试。

jetty-runner.jar外,还需要jetty-servlets.jar

添加文件override-web.xml,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">

<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,DELETE,PUT,HEAD</param-value>
    </init-param>
    <init-param>
      <param-name>allowedHeaders</param-name>
      <param-value>origin, content-type, accept, authorization</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>cross-origin</filter-name>
    <url-pattern>*</url-pattern>
  </filter-mapping>

</web-app>

然后制作jetty-web.xml上下文

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="war">/</Set>
  <Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/override-web.xml</Set>
</Configure>

按如下方式运行PlantUML的服务器

java -jar jetty-runner.jar --config jetty.xml --jar jetty-servlets.jar plantuml.war jetty-web.xml