【发布时间】:2015-07-27 12:53:12
【问题描述】:
我正在使用django 构建我的网络服务器,其他人作为客户端连接到我。现在我需要知道客户端的端口号来区分它们。如果他们的浏览器打开同一个链接的两个“标签”,即两个页面但同一个链接,我也必须区分它们。
虽然我知道我可以使用 request.META['REMOTE_ADDR'] 在我的 django 视图函数中获取客户端的 IP,但这对我来说还不够。
然后我学习了一些 TCP/IP 基础知识,然后我知道在 TCP/IP 层,每个 IP 数据包都有一个 IP 标头,其中包含客户端的端口号。但是如何在 django 中访问它?
附加信息:
- 我正在使用 python 2.6 和 django 1.4
- 我知道浏览器的每个 TAB 都会被分配一个随机的唯一端口来访问我的 django 网页端口。 -- 看到这个链接'The web server opens port 80, but the browser has a different, randomly-assigned port.'我真的需要区分它们。所以我直观的想法是使用IP包中的端口号。如果您有任何其他建议,也欢迎。
- 我找到了the similar question here,但我现在没有使用Apache。这对我来说可能很难配置,因此可能会导致其他更复杂的问题。这可能会使这个简单的问题变得复杂。
【问题讨论】:
-
有一个类似的问题[这里][1][1]:stackoverflow.com/questions/20316078/…
-
我看过这个话题,但解决方案可能不是最好的。所以我在这里更直接地提出这个问题。在谷歌群组中,我看到客户端使用与服务器相同的端口访问我的网站的荒谬答案......
-
你试过sessions 吗?
-
我对您的说法“我知道浏览器的每个 TAB 都会打开一个唯一的端口来访问我的 django 网页”感到有点困惑。您的 Django 应用程序只监听一个端口。会话机制不适合您区分用户的需求吗?
-
在 HTTP 中,连接不是持久的。因此,这些端口在每个连接上都是不同的,因此您不能将它们作为 users 的标识符。