Получение IP-адреса из HTTP POST-запроса с использованием Python - PullRequest
7 голосов
/ 22 февраля 2012

Я использую скрипт на python для работы моего веб-сервера с использованием модуля BaseHTTPServer. Ниже мой код для сервера:

import string,cgi,time
from os import curdir, sep
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
#import pri

class MyHandler(BaseHTTPRequestHandler):

    def do_GET(self):
        try:
        if self.path.endswith("/"):
        f = open(curdir + sep + "index.html")
        self.send_response(200)
        self.send_header('Content-type',    'text/html')
        self.end_headers()
        self.wfile.write("<HTML> GET OK.<BR>")
        f.close()
        return

            return

        except IOError:
            self.send_error(404,'File Not Found: %s' % self.path)


    def do_POST(self):
        global rootnode
        try:
            ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))
            if ctype == 'multipart/form-data':
                query=cgi.parse_multipart(self.rfile, pdict)
            self.send_response(200)
            self.send_header('Content-type',    'text/html')
        self.end_headers()
        file = query.get('file')
        self.wfile.write("<HTML> POST OK.<BR>")
        f = open("data.zip", "wb")
            f.write(file[0])
            f.close()
            print("File received.")
        return

        except :
            pass

def main():
    try:
        server = HTTPServer(('', 8080), MyHandler)
        print 'started httpserver...'
        server.serve_forever()
    except KeyboardInterrupt:
        print '^C received, shutting down server'
        server.socket.close()

if __name__ == '__main__':
    main()

Есть ли способ получить IP-адрес запроса POST, когда мой сервер его получил? Спасибо заранее.

Ответы [ 2 ]

11 голосов
/ 22 февраля 2012

Вы сможете получить их IP-адрес с self.client_address[0].

0 голосов
/ 24 июля 2013

Для тех, кто не использует библиотеку BaseHTTPServer self.request.remote_addr отлично работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...