也许我只是遗漏了一些基本的知识,但我无法弄清楚为什么servlet过滤器没有捕获主GWT模块的.html文件上的GET请求。
我的过滤器在web.xml中定义为
<filter>
<filter-name>GaeAuthFilter</filter-name>
<filter-class>com.test.GaeAuthFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GaeAuthFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
当我在开发模式下启动应用时,它会在浏览器中打开http://127.0.0.1:8888/AdminPanel.html?gwt.codesvr=127.0.0.1:9997,但过滤器中没有任何内容:(
我需要这个的原因是我不希望我的身份验证在RequestFactory ajax调用上失败,因为它看起来很丑,因为它首先加载html然后重定向到Google帐户登录页面。我想在访问html页面时捕获未经身份验证的用户,因此浏览器甚至无法加载网站的受保护区域。
作为替代方案,我尝试使用web.xml的“security-constraint”部分,但它也忽略了对.html文件的调用。
请告知。
谢谢!
答案 0 :(得分:8)
来自the AppEngine documentation:
注意:静态文件,逐字提供给用户的文件(如图像,CSS或JavaScript)与部署描述符中提到的路径分开处理。无论部署描述符中的servlet和过滤器映射如何,对与路径中的文件路径匹配的URL路径的请求都将为该文件提供服务,该文件将被视为静态文件。您可以使用appengine-web.xml文件从那些被视为静态文件的文件中排除文件。
我不做AppEngine,但我想为你希望过滤器应用的文件添加一个<exclude>
(这些文件将由默认servlet提供 ;我猜他们将因此而被收取不同的费用)
答案 1 :(得分:3)
我还没有查看原因,但是当我遇到这个问题时(匆忙),有效的方法是删除index.html
并使<welcome-file>
成为.jsp