Добавление заголовков HSTS в app.yaml (Google App Engine)
У меня есть следующий раздел обработчиков в моем app.yaml
:
handlers:
- url: /(robots\.txt|sitemap\.xml)
static_files: \1
upload: (robots\.txt|sitemap\.xml)
secure: always
http_headers:
Strict-Transport-Security: 'max-age=63072000; includeSubDomains; preload'
- url: /.*
script: main.app
secure: always
http_headers:
Strict-Transport-Security: 'max-age=63072000; includeSubDomains; preload'
и другой поддомен, обслуживаемый другим подмодулем (static.yaml
) имеет следующее:
handlers:
- url: /
static_dir: files
secure: always
http_headers:
Access-Control-Allow-Origin: '*'
Strict-Transport-Security: 'max-age=63072000; preload'
Я смог развернуть static.yaml
без каких-либо проблем с приложением:
$ appcfg.py update static.yaml
12:48 PM Host: appengine.google.com
12:48 PM Application: XXXXXX; module: static; version: 1
12:48 PM
Starting update of app: XXXXXXXX, module: static, version: 1
12:48 PM Getting current resource limits.
12:48 PM Scanning files on local disk.
[...]
[...]
12:49 PM Checking if updated app version is serving.
12:49 PM Completed update of app: XXXXXX, module: static, version: 1
тогда как, когда я пытаюсь обновить app.yaml
Конфигурация, я получаю:
$ appcfg.py update app.yaml
12:48 PM Host: appengine.google.com
Usage: appcfg.py [options] update <directory> | [file, ...]
appcfg.py: error: Error parsing .\app.yaml: Unexpected attribute "http_headers" for mapping type script.
in ".\app.yaml", line 31, column 1.
Я понимаю, что это означает, что мне придется обрабатывать конфигурацию HSTS в самом скрипте Python. Но у меня есть ~10 обработчиков в main.app
интерфейс. Вместо обновления каждого из них для добавления заголовка STS, есть ли альтернатива для этого в app.yaml
сам уровень?
Проверка app.yaml
ссылка на GAE, нет упоминания об ограничении http_header
директива в script
отображение типа.
3 ответа
Вы можете использовать app.yaml для управления заголовками HTTP для статических обработчиков файлов, а не для динамических обработчиков. Вам нужно будет установить заголовок в коде вашего приложения.
Как документ: https://cloud.google.com/appengine/docs/flexible/nodejs/using-custom-domains-and-ssl Flexible/ nodejs/ using-custom-domains-and- ssl
Вы не можете использовать заголовки Strict-Transport-Security, если ваш домен не находится в белом списке. Чтобы разместить свой домен в белом списке, свяжитесь с...
ОБНОВИТЬ
С 2018 года пользовательские домены не должны быть в белом списке. Другими словами, заголовки HSTS больше не удаляются.
Сегодня я просматривал заголовки http в app.yaml и увидел это. Похоже, это связано с вашей проблемой.
Кроме того, заголовок Strict-Transport-Security удаляется из ответов, отправляемых с любых доменов, кроме *.appspot.com.
https://cloud.google.com/appengine/docs/python/how-requests-are-handled