了解如何安全地从 Google App Engine 标准环境中传送静态内容,例如 HTML 文件、CSS 和图片。
准备工作
如果您的网站使用的是自定义域名,请按照相关说明为您的项目添加自定义网域。
传送网页
App Engine 可以传送静态内容,例如 HTML 页面和图片等媒体。 静态内容是指不会作为 JSP 或 Servlet 执行的任何内容。
以下示例为一个基本 HTML 页面,显示了一条欢迎消息。
<!DOCTYPE html>
<html>
<head>
<title>The App Engine Blog</title>
</head>
<body>
<h1>Welcome to the App Engine Blog</h1>
<p>This is being served by App Engine!</p>
</body>
</html>
放置静态文件的位置
您必须将已传送的静态文件放置在应用的 webapp
目录中。您可以使用文件夹,但请注意,所有文件路径和 URI 都与 webapp
目录相关。
选择静态文件的位置后,您必须使用 <static-files>
元素在 appengine-web.xml
文件中定义该位置。
在以下示例中,基本 appengine-web.xml
配置将 webapp
目录中的所有 HTML 文件均视作静态文件。
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<threadsafe>true</threadsafe>
<runtime>java8</runtime>
<static-files>
<include path="/**.html" >
</include>
</static-files>
</appengine-web-app>
您可以包含多个 <include path>
元素,以引用不同目录和不同文件类型。以下示例是对上述示例的扩展:
<static-files>
<include path="/**.html" >
</include>
<include path="/images/**.jpg" >
</include>
</static-files>
现在,webapp/images/
目录中带有 .jpg
扩展名的所有文件都将被视作静态文件。
在上面的示例中,如果要显示 webapp/images
目录中的 logo.jpg
,<img>
标记将具有来源 URI <img src="/images/logo.jpg">
。
为所有静态内容强制使用 HTTPS
App Engine 支持通过 HTTP 或 HTTPS 传送内容,建议您使用 HTTPS。要设置安全网址,您必须在项目的 web.xml
中添加 <security-constraint>
元素。示例 <security-constraint>
如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>blog</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
通过 <transport-guarantee>CONFIDENTIAL</transport-guarantee>
,所有请求都会自动重定向至静态内容的 HTTPS URI。
部署到 App Engine
您可以使用 Maven 将应用部署到 App Engine。
转到项目的根目录并输入以下命令:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
将 PROJECT_ID 替换为您的 Google Cloud 项目的 ID。 如果您的 pom.xml
文件已经指定了您的项目 ID,则您无需在运行的命令中添加 -Dapp.deploy.projectId
属性。
Maven 完成应用部署后,输入以下命令可在新应用中自动打开网络浏览器标签:
gcloud app browse
后续步骤
静态文件可用于通过 App Engine 传送图片、层叠样式表和静态 HTML 内容。如需了解更多信息,请参阅通过 HTML 表单处理用户数据。