【发布时间】:2016-03-07 13:41:32
【问题描述】:
雄猫 8_32
Windows 7
Java 8_51
RestEasy 3.0.11.Final
GWT 2.7.0 (Jetty jetty-9.3.5.v20151012)
Servlet 代码对另一个 servlet(同一个容器)进行 RestEasy 调用 - 第二个 servlet 在响应时设置“警告”HTTP 标头。想在第一个 servlet 中访问它,但在 Tomcat 中运行时,不包括该标头。
在第一个 servlet 中获取标头的代码:
对象头 = ((ClientResponseFailure) e).getResponse().getResponseHeaders().get("Warning");
还尝试过:getHeaders()、getStringHeaders() 和 getHeaderString()。
当使用 Jetty 在 IntelliJ (15.0.4) 中以 superdev 模式运行 GWT 时,上面会返回一个列表,其中包含一个包含警告字符串的项目。远程调试 Tomcat 时,该调用返回 null。
将此添加到 web 应用程序 xml,并且还尝试了 Tomcat conf/web.xml...
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Warning</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
也尝试过 cors.allowed.headers。
任何指针?
【问题讨论】:
-
Fiddler [或您选择的代理] 中的响应是什么样的?你看到那里的标题了吗?
-
好主意 - 但在一切完成之前,我无法让 Fiddler 向我显示响应标头(这都在同一个容器中)。我确实注意到,在设置 Content-Length 和 Warning 之后,响应标头仍然只包含 Set-Cookie 和 X-Frame-Options。当它到达第二个 servlet 时,它具有 Content-Length、Date、Server、Set-Cookie 和 X-Frame-Options。如前所述,在 Jetty 上一切正常(即我得到所有标题)。
-
知道了...没有意识到它不会“通过网络”。