编辑:
我有一个包含以下 HTML 代码的页面:
<img src="/static/ads/1111.png"> <!-- 1 -->
<img src="/static/2222.png"> <!-- 2 -->
当我加载页面时,无法显示第一张图片。显示第 2 个图像。
检查 Chrome DevTools 的网络选项卡中的图像请求,该请求始终处于“待处理”状态。
更奇怪的是,当我直接访问 1 号图像时http://localhost:8080/static/ads/1111.png
,图像实际上会加载。
这个问题似乎只影响谷歌浏览器。我在 Firefox 中对其进行了测试,它在那里工作。
对于 Chrome,我收到控制台错误:
Port error: Could not establish connection. Receiving end does not exist.
当我比较 Image No. 1 的请求标头时
Cache-Control:no-cache
Pragma:no-cache
Referer:http://localhost:8181/index.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31
与 2 号图像
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Host:localhost:8181
Pragma:no-cache
Referer:http://localhost:8181/index.html
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31
有一个很大的不同。有谁知道发生了什么?
更多信息
我正在使用 BalusC 的FileServlet来提供在我的 web-app 目录之外找到的文件。
我的 Web 应用程序使用 Struts2 作为其框架。
我的 web.xml:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>fileServlet</servlet-name>
<servlet-class>com.FileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>fileServlet</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
我在 struts.xml 中排除了这条路径,如下所示:
<constant name="struts.action.excludePattern" value="/static/.*"/>