在python中拥有客户端的地址

时间:2014-07-18 13:08:23

标签: python ip cgi

我的要求是:我的网页是用python创建的(其中有html代码),每个页面都有一个按钮可以转到下一页。 例如,当我们提交html表单时,是否可以获取客户端的地址? 我的意思是,要进入客户端的URL地址。

如果可能,我会显示我的代码,否则我会删除我的问题。

这是我的 html 代码:

ip = cgi.escape(os.environ["REMOTE_ADDR"])

<html>

path install: ${install_path}<br/><br/>

os: ${os}<br/><br/>

unix user: ${user_name}<br/><br/>

<form name="sd" method="get" action="ip/cgi/scriptGet.py">
    Name: <input type="text" name="name"><br/><br/>
    Pseudo: <input type="text" name="pseudo"/><br/><br/>
    <input type="submit" value="OK"/>
</form>

这里是我的 python代码

import os, sys, platform, getpass, tempfile
import webbrowser
import string
import json
import cgi, cgitb, os   

def main( server_IP,install_path):

  template = open('scriptHmtl.phtml').read()

  contenu = string.Template(template).substitute(
            install_path = install_path,
            os = user_os,
            user_name = user_login
            )

if __name__ == "__main__":
  server_IP = sys.argv[1]
  install_path = sys.argv[2]

main(server_IP,install_path)

2 个答案:

答案 0 :(得分:0)

客户端的IP(我假设你的意思是&#34;客户端地址&#34;)以TCP / IP级别传递给您的服务器。如果您正在使用CGI(根据您的评论中隐藏的一些信息并且未在您的问题中说明),它应该以{{1​​}}的形式提供给CGI脚本环境(cf http://www.ietf.org/rfc/rfc3875 ,第4.1.8节)。在Python中,访问环境变量的方法是使用REMOTE_ADDRhttps://docs.python.org/2/library/os.html#os.environ)。

请注意,由于CGI脚本可以访问此地址,因此您无需将其添加到URL,查询字符串或(在POST或PUT请求的情况下)请求的正文。

另请注意,如果通过代理,负载均衡器或其他任何方式访问您的服务器,则REMOTE_ADDR可能不是真正的客户端IP,您可能必须检查HTTP请求的os.environ标头标题,cf http://en.wikipedia.org/wiki/X-Forwarded-For。此标头(如果已定位)应与X-Forwarded-For或任何其他请求标头相同,但可能已重命名为REMOTE_ADDR,参见http://www.ietf.org/rfc/rfc3875.txt第4.1和4.1.18节。

答案 1 :(得分:0)

您可以使用cgiREMOTE_ADDR并使用如下:

cgi.escape(os.environ["REMOTE_ADDR"])

将它放在变量中并将变量调用为html表单的动作....