Мы используем Apache 2.4 с mod_python, который используется для выходного фильтра, который переписывает некоторые выходные данные HTML. В настоящее время мы устанавливаем файлы cookie с использованием document.cookie в JS, но это не оптимально. В идеале мы хотели бы установить куки через заголовки. Мы пытались использовать filter.req.headers_out['SetCookie']
и Cookie.add_cookie
, но безрезультатно.
Это вообще возможно? Если нет, то какой вариант лучше? Мы застряли с Apache 2.4 и mod_python в качестве наших единственных опций.
Доступные модули Apache:
загруженные модули:
- access_compat_module (общий доступ)
- alias_module (общий доступ)
- auth_basic_module (общий доступ)
- authn_core_module (общий доступ)
- authn_file_module (общий доступ)
- authz_core_module (общий доступ)
- authz_host_module (общий доступ)
- autoindex_module (общий доступ)
- cgi_module (общий доступ)
- core_module (статический)
- deflate_module (общий доступ)
- dir_module (общий доступ)
- env_module (общий доступ)
- expires_module (общий доступ)
- filter_module (общий доступ)
- headers_module (общий доступ)
- http_module (статический)
- include_module (общий)
- log_config_module (общий доступ)
- mime_module (общий доступ)
- mpm_prefork_module (общий доступ)
- модуль переговоры (общий)
- php7_module (общий доступ)
- proxy_http_module (общий доступ)
- proxy_module (общий доступ)
- python_module (общий доступ)
- remoteip_module (общий доступ)
- rewrite_module (общий доступ)
- setenvif_module (общий доступ)
- so_module (статический)
- ssl_module (общий доступ)
- substitute_module (общий доступ)
- systemd_module (общий доступ)
- unique_id_module (общий доступ)
- unixd_module (общий доступ)
- vhost_alias_module (общий доступ)
- watchdog_module (общий доступ)
Как я сейчас пытаюсь установить куки (в dev):
def add_cookie(req, name, value, domain=None, expires=None):
"""Adds a cookie
Arguments:
req -- the request
name -- the cookie name
value -- the cookie value
domain -- (optional) the domain the cookie is applicable to
expires -- (optional) the time in minutes the cookie is set to expire, defaults to current session
"""
cookie = Cookie.Cookie(name, value)
# Always set the path to the root
cookie.path = '/'
# Set domain if present
if domain is not None:
cookie.domain = domain
# Set expires if present
if expires is not None:
expires = int(expires)
cookie.expires = time.time() + (60 * expires)
# Add a freshly-baked cookie
Cookie.add_cookie(req, cookie)