0

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 リクエストを処理しますが、フラッシュ アプリケーションで使用される 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
"

このリクエストも処理する方法はありますか? アドビでは、ポート 843 で別の tcp サーバーを実行してこのファイルを提供することをお勧めします。すべてをポート 8080 に保持したいと思います。

4

2 に答える 2

0

ポート 843 で話されるプロトコルは HTTP ではありません。http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.htmlを参照してください。

有効な HTTP リクエストは次のようになります

GET /path HTTP/1.0

(その他の例については、たとえばhttp://www.jmarshall.com/easy/http/#sampleを参照してください。)

Flash Player クライアントに 843 以外のポートでポリシー ファイルを探すように指示する方法がある場合、このカスタム XML っぽい "" メッセージの代わりに HTTP を使用するように指示する方法があるかもしれません。 HTTP サーバーからこれを処理できますか。

何でも可能ですが、HTTP に使用するのと同じポート 8080 で WSGI サーバーの一部として非 HTTP リクエストを処理することは、まったく良い考えとは思えません。

于 2012-05-22T03:34:35.190 に答える
0

今日はこれをもう少し剥がすことができました。アドビのドキュメントに埋もれているのは、生のソケットを使用している場合、フィットは生の XML クエリを使用してクロスドメイン ファイルを探しに行くというメモです。「http」を指定すると動作するように見え、http 経由でクロスドメイン ファイルを取得します。私にとっての問題は、フラッシュ スクリプトで生の tcp ソケットを使用していたことです。そのため、そのサーバーからクロスドメイン ファイルを取得しようとしました。単純にするために、ネットワーク呼び出しを http を使用するように変更します。とにかくそれが彼らがしていることです(私は、httpマルチパート応答を使用してストリーミングを行うことがわかったサンプルを使用していました)

于 2012-06-17T03:40:05.727 に答える