Я не эксперт в низкоуровневых сетях и не знаю, как распространенные реализации открытой авторизации Wi-Fi помечают своих клиентов. Но мне кажется верным то, что в модели OSI нижние уровни ничего не знают о верхних уровнях. Другими словами, IP не имеет понятия о терминах HTTP и URL-адресе страницы.
Таким образом, имея под рукой ссылку на сокет, которую, я считаю, можно получить с помощью настройки CherryPy, вы получите максимум исходный IP-адрес, а не URL-адрес. Кроме того, смешивание сетевого (IP) и прикладного (HTTP) уровней и, как правило, управление одним объектом приложения в нескольких местах, вероятно, приведет к разного рода проблемам. Например, работа с HTTP-говорящими агентами, например, прямыми и обратными прокси-серверами, которые не сохраняют нюансы нижнего уровня.
Обновлять
Хорошо, поскольку вы говорите, что у вас также есть URL-адрес запроса, вот как вы можете получить необработанный сокет. Как вы можете видеть, это находится глубоко под капотом и, по сути, является деталью реализации, на которую конечный пользователь не должен полагаться. Это не является частью контракта и может быть изменено в любой следующей версии. Таким образом, у вас есть хороший шанс выстрелить себе в ногу.
#!/usr/bin/env python
import cherrypy
config = {
'global' : {
'server.socket_host' : '127.0.0.1',
'server.socket_port' : 8080,
'server.thread_pool' : 8
},
}
class App:
@cherrypy.expose
def index(self):
'''For caveats and details on the slippery slope, take a look at ws4py
https://github.com/Lawouach/WebSocket-for-Python/blob/master/ws4py/server/cherrypyserver.py
'''
print(cherrypy.serving.request.rfile.rfile._sock)
return 'Make sure you know what you are doing.'
if __name__ == '__main__':
cherrypy.quickstart(App(), '/', config)
person
saaj
schedule
13.04.2015