【发布时间】:2022-08-03 21:15:51
【问题描述】:
我使用 Caddy 作为反向代理,在 CherryPy 上提供一个网络应用程序。 Caddy 正在处理基本身份验证,我想将用户名传递给 CherryPy 应用程序。
我已经像这样修改了我的 Caddyfile:
my.example.com {
redir /data_tools /data_tools/
handle_path /data_tools/* {
import basic-auth
reverse_proxy data_tools:1234 {
header_down +X-WEBAUTH-USER={http.auth.user.id}
}
}
}
当我转到 my.example.com/data_tools/ 时,我看到我的标题正确填充。如果我访问 my.example.com/data_tools/index.html,标题就在那里,但它是空的。
我试图在 CherryPy 中用不同的钩子拦截标题,但我的标题根本没有出现在那里。
def show_headers():
print("Request")
print(json.dumps(cherrypy.request.headers, indent="\t"))
print("Response")
print(json.dumps(cherrypy.response.headers, indent="\t"))
cherrypy.tools.get_user = cherrypy.Tool('on_start_resource', show_headers)
^^^ 显示预期的标题,但不是我的自定义标题。
有什么建议么?
【问题讨论】:
-
配置标头的 caddy 语法不使用等号:
header_down [+|-]<field> [<value|regexp> [<replacement>]]。header_down +X-WEBAUTH-USER {http.auth.user.id}怎么样? -
@cyraxjoe - 谢谢,但没有区别。如果我去 .../data_tools/ 仍然会显示,但不会显示 .../data_tools/index.html 并且不会在 CherryPy 中显示。