【发布时间】:2016-06-29 05:41:21
【问题描述】:
我正在将一个简单的工具集从 python 2.7 迁移到 3.5,其中一个工具是使用 web.py 的简单 Web 服务器。
不幸的是 web.py 还不能用于 3.5,所以我为此切换到了 bottle.py。
根据我正在创建的接口规范,我需要通过添加以下行来关闭我可以在 web.py 中轻松完成的连接:
web.header('Connection', 'close')
但是使用瓶子时,当我执行以下操作时,我会收到不允许逐跳标头的错误:
response.add_header('Connection', 'close')
无论如何,如何将此标头添加到响应中?我已经阅读了瓶子文档,在线搜索并查看了瓶子代码。
【问题讨论】:
-
Bottle 是一个 WSGI 框架,WSGI protocol 明确禁止设置逐跳标头:
Applications and middleware are forbidden from using HTTP/1.1 "hop-by-hop" features or headers。也许您可以说服 http 服务器设置标头。但是你确定你需要手动设置,http服务器不应该已经处理了吗?还是您正在处理的一些自定义 http 协议? -
这实际上解释了很多。但是我需要将标头中的 Connection: close 发送给客户端,其基本原因是某些客户端无法正确处理响应。
-
你使用内置的瓶子开发服务器吗?您可能应该只将其用于开发。
-
它只是一个测试工具,它直接从开发环境运行,所以是的,我确实使用内置服务器。
-
那么我认为你必须使用我概述的方法。如果您使用了应该可以配置的 nginx 之类的东西(例如,请参阅 here 虽然我不知道这是否也适用于您的特殊情况)。
标签: python http-headers bottle