David Harvey
dmharvey at math.harvard.edu
Sat Jul 8 22:48:10 EDT 2006
On Jul 8, 2006, at 10:38 PM, Graham Dumpleton wrote: > > On 09/07/2006, at 12:13 PM, David Harvey wrote: > >> I'm running mod_python 3.2.8 on Mac OS 10.4.6, python 2.4.3, >> apache 2.2.2, on my desktop machine. >> >> I've got apache set up to load this script: >> >> ========================= begin >> >> from mod_python import apache >> >> def handler(request): >> request.write(request.connection.remote_ip) >> return apache.OK >> >> ========================= end >> >> When I browse to "http://127.0.0.1/", the script prints out >> "127.0.0.1" as expected. >> >> If I connect from a local network, e.g. to "http://192.168.0.6/" >> it prints out "192.168.0.4" (the address of the other machine) as >> expected. >> >> But when I browse to "http://localhost/" from this machine, it >> prints "::1". >> >> What does "::1" mean? Why isn't it giving me an IP address? >> Shouldn't I be getting "127.0.0.1" as above? How can I guarantee >> to get an IP address? > > This field is populated by apr_sockaddr_ip_get() in Apache Runtime > library. The field > can be populated with either IPv4 or IPv6 addresses. On a Mac, when > you use the > string "localhost" it is as far as I know actually using an IPv6 > connection to Apache and > "::1" is what the Mac is using to identify that IPv6 client. > > What do you want the remote IP address for? Depending on what you > want to do, > there may be better ways of doing it. > > Graham Basically I want to use it as a temporary username for anonymous visitors who haven't registered for an account. Kind of like how wikipedia does. I was just a bit concerned when I saw "::1", it made me feel that using remote_ip is not a particularly reliable way to get the request IP address. Do you have any other suggestions? David
|