我有一个使用 gevent.pywsgi.WSGIServer (http://www.gevent.org/gevent.pywsgi.html)的 Web 服务器,我需要处理非 http 请求以及正常的 http 请求。
Server:
web_server = gevent.pywsgi.WSGIServer(('', 8080), web_server);
web_server.serve_forever();
Handler:
def viewer_command_server(env, start_response):
if env['REQUEST_METHOD'].upper() == "PUT":
path = env["PATH_INFO"]
start_response("200 OK", [("Content-Type", "text/html"), ("Cache-Control", "no-cache"), ("Connection","keep-alive")])
return [ ""]
这处理正常的 PUT 请求,但我还想为 flash 应用程序使用的 crossdomain.xml 文件提供服务。但问题是当 Flash 应用程序尝试检索其 crossdomain.xml 文件时,我得到了这个。
"socket fileno=13 sock=66.228.55.170:9090 peer=96.54.202.251:63380: Invalid HTTP method: '<policy-file-request/>\x00'
96.54.202.251 - - [2012-05-21 22:58:53] "<policy-file-request/>" 400 0 2.940527
"
有没有办法处理这个请求?Adobe 建议在端口 843 上运行单独的 tcp 服务器来提供此文件。我想把所有东西都保留在 8080 端口上。