1

宿題として非常に基本的な Web サーバーを作成しており、localhost ポート 14000 で実行しています。localhost:14000 にアクセスすると、サーバーはフォームを含む HTML ページを返します (フォームのアクションは同じアドレスです)。 - localhost:14000、それが適切かどうかはわかりません)。

基本的に、送信後にページがリロードされたら、GET リクエストからデータを収集できるようにしたいのですが、どうすればよいですか? 一般的にGETの内容にアクセスするにはどうすればよいですか?

注: 既に socket.recv(xxx) を試しましたが、ページが初めて読み込まれる場合は機能しません。その場合、クライアントから何も「受信」していないため、回転し続けます。

4

1 に答える 1

2

その秘密は conn.recv にあります。これにより、リクエストのブラウザ/クライアントから送信されたヘッダーが得られます。私が safari で生成したものと似ている場合は、簡単に解析できます (複雑な正規表現パターンがなくても)。

    data = conn.recv(1024)
    #Parse headers
    """
    data will now be something like this:

    GET /?banana=True HTTP/1.1
    Host: localhost:50008
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-us
    Accept-Encoding: gzip, deflate
    Connection: keep-alive

    """
    #A simple parsing of the get data would be:
    GET={i.split("=")[0]:i.split("=")[1] for i in data.split("\n")[0].split(" ")[1][2:].split("&")}
于 2012-04-12T06:58:58.013 に答える