应用引擎中无法将静态文件转换为资源文件以使http请求通过身份验证过滤器
Posted
技术标签:
【中文标题】应用引擎中无法将静态文件转换为资源文件以使http请求通过身份验证过滤器【英文标题】:Failure to convert static files to resource files in app engine so that http requests pass authentication filter 【发布时间】:2013-01-14 04:34:00 【问题描述】:我正在尝试让对 html 文件的请求通过谷歌应用引擎部署中的过滤器。我的目标是通过将其排除为静态文件并根据以下建议使其成为资源文件来实现这一点:https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/VbPYdkNhW98
很遗憾,我没有这样做。所以要么我误解了,这是不可能的,要么我做错了什么。任何人都可以对此有所了解吗?对localhost:8888/index.html
或localhost:8888/app.html
的调用不会通过过滤器。
非常感谢!
ps:所有.html
文件都位于我的eclipse项目的/war/WWW-ROOT/
目录下。该过滤器非常适合/servlets/firstservlet
。在这篇文章下方,您可以找到web.xml
和appengine-web.xml
的内容。
Web.xml
<?xml version="1.0" encoding="utf-8" standalone="no"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- servlet definition and mapping -->
<servlet>
<servlet-name>firstservlet</servlet-name>
<servlet-class>zorgco.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>firstservlet</servlet-name>
<url-pattern>/servlets/firstservlet</url-pattern>
</servlet-mapping>
<!-- enforce https -->
<security-constraint>
<web-resource-collection>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- define and enforce authentication filters -->
<filter>
<filter-name>authorization</filter-name>
<filter-class>zorgco.AuthorizationFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>authorization</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<static-files>
<exclude path="/*" />
</static-files>
<resource-files>
<include path="/*" />
</resource-files>
<!-- Define welcome files -->
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Appengine-web.xml
<?xml version="1.0" encoding="utf-8"?>
<application>Name</application>
<version>1</version>
<threadsafe>true</threadsafe>
<public-root>/WWW-ROOT</public-root>
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
<sessions-enabled>true</sessions-enabled>
【问题讨论】:
【参考方案1】:错误地将 static-files
和 resource-files
元素放在 web.xml 而不是 appengine-web.xml 中。移动它们解决了这个问题。
【讨论】:
以上是关于应用引擎中无法将静态文件转换为资源文件以使http请求通过身份验证过滤器的主要内容,如果未能解决你的问题,请参考以下文章
nginx静态资源文件无法访问,403 forbidden错误
在 Google 应用引擎 Python 中提供静态 html