Stai diventando l'indirizzo IP del server di , non di clienti del server.
Si desidera guardare della richiesta diREMOTE_ADDR
, in questo modo:
from bottle import Bottle, request
app = Bottle()
@app.route('/hello')
def hello():
client_ip = request.environ.get('REMOTE_ADDR')
return ['Your IP is: {}\n'.format(client_ip)]
app.run(host='0.0.0.0', port=8080)
EDIT: Alcune persone hanno osservato che, per loro, il valore di REMOTE_ADDR
è sempre l'indirizzo stesso IP (di solito 127.0.0.1
). Questo perché sono dietro un proxy (o bilanciamento del carico). In questo caso, l'indirizzo IP originale del client viene in genere memorizzato nell'intestazione HTTP_X_FORWARDED_FOR
. Il seguente codice funzionerà in entrambi i casi:
@app.route('/hello')
def hello():
client_ip = request.environ.get('HTTP_X_FORWARDED_FOR') or request.environ.get('REMOTE_ADDR')
return ['Your IP is: {}\n'.format(client_ip)]
fonte
2015-07-15 00:21:24
c'è alcun servizio in-tra, ad esempio nginx che riceve in realtà il collegamento esterno dal client e la richiesta avanti html per imbottigliare? –
@LukaRahne Ho lo stesso problema quando Apache inoltra la richiesta alla bottiglia: http://stackoverflow.com/questions/36954669/apache-python-bottle-visitor-ip-always-refers-to-127-0-0 -1 Hai qualche idea? – Basj