首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法在不重复的情况下为app.yaml中的所有静态文件设置默认的Http头?

有没有办法在不重复的情况下为app.yaml中的所有静态文件设置默认的Http头?
EN

Stack Overflow用户
提问于 2020-07-15 00:25:51
回答 1查看 161关注 0票数 0

我有一个app.yaml文件,其中包含一堆不同的静态文件指令,例如

代码语言:javascript
复制
- url: /sitemap.xml
  static_files: public/sitemap.xml
  secure: always
  upload: public/sitemap.xml
  http_headers:
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    X-Frame-Options: SAMEORIGIN
    X-Content-Type-Options: nosniff
    Referrer-Policy: no-referrer
    Feature-Policy: microphone 'none'; notifications 'none'
    Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' ; font-src fonts.gstatic.com ; style-src 'self' 'unsafe-inline' fonts.googleapis.com

现在,我真的不想为我提供的每个静态文件或路径添加数十个http头的副本,从而使app.yaml文件变得臃肿。是否可以指定一个全局标头指令,用于所有提供服务的静态路径?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 03:39:16

GAE不允许在app.yaml中使用锚点。否则,您可以执行以下操作:

代码语言:javascript
复制
runtime: python37       
entrypoint: gunicorn -b :$PORT application:app --timeout 36000

headers: &headers
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  X-Frame-Options: SAMEORIGIN
  X-Content-Type-Options: nosniff
  Referrer-Policy: no-referrer
  Feature-Policy: microphone 'none'; notifications 'none'
  Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' ; font-src fonts.gstatic.com ; style-src 'self' 'unsafe-inline' fonts.googleapis.com

handlers: 
- url: /sitemap.xml
  static_files: public/sitemap.xml
  secure: always
  upload: public/sitemap.xml
  http_headers: *headers

如果您使用Admin API (https://cloud.google.com/appengine/docs/admin-api/deploying-overview)进行部署,您可以使用上面的app.yaml,但将其转换为app.json (例如https://www.convertjson.com/yaml-to-json.htm),这会将上面带有锚点的yaml代码转换为更长的版本:

代码语言:javascript
复制
{
   "runtime": "python37",
   "entrypoint": "gunicorn -b :$PORT application:app --timeout 36000",
   "headers": {
      "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
      "X-Frame-Options": "SAMEORIGIN",
      "X-Content-Type-Options": "nosniff",
      "Referrer-Policy": "no-referrer",
      "Feature-Policy": "microphone 'none'; notifications 'none'",
      "Content-Security-Policy": "default-src 'self'; script-src 'self' 'unsafe-inline' ; font-src fonts.gstatic.com ; style-src 'self' 'unsafe-inline' fonts.googleapis.com"
   },
   "handlers": [
      {
         "url": "/sitemap.xml",
         "static_files": "public/sitemap.xml",
         "secure": "always",
         "upload": "public/sitemap.xml",
         "http_headers": {
            "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
            "X-Frame-Options": "SAMEORIGIN",
            "X-Content-Type-Options": "nosniff",
            "Referrer-Policy": "no-referrer",
            "Feature-Policy": "microphone 'none'; notifications 'none'",
            "Content-Security-Policy": "default-src 'self'; script-src 'self' 'unsafe-inline' ; font-src fonts.gstatic.com ; style-src 'self' 'unsafe-inline' fonts.googleapis.com"
         }
      }
   ]
}

可能不是你所希望的,而是把它放在那里。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62899656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档