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

Posted

技术标签:

【中文标题】在 jetty-runner 下运行的 web-app 中设置 web 服务器头 (Access-Control-Allow-Origin)【英文标题】:Set web server headers (Access-Control-Allow-Origin) in web-app running under jetty-runner 【发布时间】:2015-01-13 20:42:57 【问题描述】:

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

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

【问题讨论】:

jetty-runner 作为要求将使此问题难以解决。您的配置要求级别意味着您应该改为使用完整的jetty-distribution @JoakimErdfelt 我只需要添加 jetty-servlets 【参考方案1】:

免责声明:我得到了有关此详细信息的帮助(不是我 100% 的回答)。我仅在 Windows 7 和带有 Java 7 的 Windows 8 下对其进行了测试。

除了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

【讨论】:

以上是关于在 jetty-runner 下运行的 web-app 中设置 web 服务器头 (Access-Control-Allow-Origin)的主要内容,如果未能解决你的问题,请参考以下文章

43 多个相同限定名类型同时存在导致的继承结构混乱的情况

43 多个相同限定名类型同时存在导致的继承结构混乱的情况

在 WebApi 中需要 SSL?

Struts2简单配置

xml文档顶层元素

Java 使用 dom4j 读取 xml文档 demo