是否可以在Apache输出过滤器中设置标头?

问题描述 投票:0回答:1

我们正在使用带有mod_python的Apache 2.4,它用于重写某些HTML输出的输出过滤器。我们目前正在JS中使用document.cookie设置cookie,但这不是最佳选择。我们理想的是喜欢通过标头设置cookie。我们尝试过使用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(共享)
  • negotiation_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(共享)

我目前如何设置cookie(在开发中):

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)
apache cookies mod-python mod-filter
1个回答
0
投票

我自己想出来了。简短的版本是,是的,你可以。它以前不适合我的原因是我设置cookie的位置不正确。我从HTML处理区域(它不属于任何地方)移动了那一点,并直接将它放在outputfilter方法中。

我希望这可以帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.