在python中具有客户端的地址

在python中具有客户端的地址,python,ip,cgi,Python,Ip,Cgi,我的要求是:我用python创建网页(其中有html代码),每个网页都有一个按钮,可以转到下一页。 例如,当我们提交一个html表单时,是否可以获得客户端的地址? 我的意思是,输入客户端的URL地址 如果可能的话,我会显示我的代码,否则我会删除我的问题 这是我的html代码: ip = cgi.escape(os.environ["REMOTE_ADDR"]) <html> path install: ${install_path}<br/><br/>

我的要求是:我用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>
客户机的IP(我假设这就是您所说的“客户机地址”)在TCP/IP级别上传递给您的服务器。如果您正在使用CGI(根据您的评论中隐藏的某些信息,这似乎是事实,但您的问题中没有说明),CGI脚本环境应将其作为
REMOTE\u ADDR
(参见第4.1.8节)。在Python中,访问环境变量的方法是使用
os.environ
()

请注意,由于CGI脚本将访问此地址,因此不需要将其添加到URL、querystring或(在POST或PUT请求的情况下)请求的正文中


还请注意,如果通过代理、负载平衡器或其他方式访问您的服务器,则远程地址可能不是真正的客户端IP,您可能需要检查HTTP请求的标头是否有
X-Forwarded-for
标头,cf。此标头(如果已定位)的访问方式应与
REMOTE\u ADDR
或任何其他请求标头的访问方式相同,但可能会重命名为
HTTP\u X\u FORWARDED\u FOR
,参见第4.1节和第4.1.18节。

您可以使用
cgi
REMOTE\u ADDR
,并像这样使用:

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

把它放在一个变量中,并调用这个变量使你的html表单起作用……

这是一个Python问题吗???@Brunodesshuilliers:是的,这是一个Python问题,你没有提到Python。我在命令行中执行我的脚本,它会打开一个带有html表单和按钮的网页,当我们点击这个按钮时,我会打开另一个页面(使用localhost作为URL),我想知道我们是否可以像http:server/cgi/script.py那样将客户端地址输入URL,很抱歉我编辑并添加了python标记。@Rob3:很抱歉我编辑并添加了python标记,这是可能的?我添加了html代码(仅html表单),我已经尝试使用REMOTE_ADDR获取地址,但它不起作用。你不必将它放在表单的URL中-cgi脚本将能够从它的环境中检索信息,参见我上面的回答。你是说cgi脚本应该部署在客户端???对不起,我不明白你为什么要这么做一件事。你能解释一下你为什么要在URL中添加客户端的IP吗?但无论如何:你需要知道的是我的答案。如果你不能理解它并相应地更新你的代码,那么你真正要求我做的是你自己的工作-我不会免费做。我想在URL中添加客户端的IP吗?那么,当我们单击我的按钮,但我想要http:address/cgi/scriptGet.py,仅此而已。谢谢,我已经完成了您所说的,但是REMOTE\u ADDR也显示了localhost…因此,我只知道获取IP地址的方法…对不起,可能是比我更好的人会帮助您。@Glacius:“某人”已经提供了所有相关信息…但显然没有多大帮助。@Brunodesshuilliers:当然,但她是一个初学者,有时我们必须向初学者展示一个小例子…:)我编辑了代码(仅html),添加了ip变量,并将该变量调用到操作中,但我总是使用localhost…可能是因为我用计算机执行脚本。。。
cgi.escape(os.environ["REMOTE_ADDR"])