Graham Dumpleton
grahamd at dscpl.com.au
Sat Jul 8 22:38:11 EDT 2006
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
|