Tornado 服务器 returns 404 当请求包含完整 url 而不是仅包含路径时
Tornado Server returns 404 when request contains full url instead of path only
标准 HTTP 请求的请求行结构如下:
GET /some/path HTTP/1.1
使用在“/some/path”处初始化的 RequestHandler 处理这些请求。
但是我的服务器正在接收一些 URI 路径包含主机域的请求:
GET http://example.com/some/path HTTP/1.1
虽然URI(a.k.a.path,"/some/path")相同,但是Tornado不识别匹配的路径,returns一个404。经过high和搜索低 我仍然无法找到解决此问题的方法。
如何配置 Tornado 来处理这些请求?
Tornado 目前不支持这种请求方式 (#1036),并且没有简单的解决方法。
根据 RFC 2616,这种请求方式是有效的,尽管它通常只在连接到 HTTP 代理时使用。使用诸如 nginx 之类的负载均衡器 可能 能够将这样的请求转换为更普遍支持的 GET /some/path HTTP/1.1\r\nHost: example.com\r\n
(我很少在野外看到代理风格的请求; 我不确定那是因为我通常使用 nginx
还是有其他因素在起作用)。
标准 HTTP 请求的请求行结构如下:
GET /some/path HTTP/1.1
使用在“/some/path”处初始化的 RequestHandler 处理这些请求。
但是我的服务器正在接收一些 URI 路径包含主机域的请求:
GET http://example.com/some/path HTTP/1.1
虽然URI(a.k.a.path,"/some/path")相同,但是Tornado不识别匹配的路径,returns一个404。经过high和搜索低 我仍然无法找到解决此问题的方法。
如何配置 Tornado 来处理这些请求?
Tornado 目前不支持这种请求方式 (#1036),并且没有简单的解决方法。
根据 RFC 2616,这种请求方式是有效的,尽管它通常只在连接到 HTTP 代理时使用。使用诸如 nginx 之类的负载均衡器 可能 能够将这样的请求转换为更普遍支持的 GET /some/path HTTP/1.1\r\nHost: example.com\r\n
(我很少在野外看到代理风格的请求; 我不确定那是因为我通常使用 nginx
还是有其他因素在起作用)。