-
Есть задача - подключение к интернет-серверу с несколькими клиентами. Собственно, для каждого подключения создаю своего HTTP-клиента и по очереди подключаю. Но после того, как подключу первого (там есть авторизация - логин, пароль) все остальные при подключении к серверу, уже считаются подключенным с логином, паролем первого. То есть, видимо как-то первым клиентом держится подключение что ли со всеми параметрами. А как бы так сделать, чтобы раздельно? И при этом, чтобы для каждого клиента соединение держалось?
-
> Но после того, как подключу первого (там есть авторизация > - логин, пароль) все остальные при подключении к серверу, > уже считаются подключенным с логином, паролем первого. > То есть, видимо как-то первым клиентом держится подключение > что ли со всеми параметрами. А как бы так сделать, чтобы > раздельно? И при этом, чтобы для каждого клиента соединение > держалось? >
что собой представляет клиент?
-
Но после того, как подключу первого (там есть авторизация - логин, пароль) все остальные при подключении к серверу, уже считаются подключенным с логином, паролем первого.
Зачем считаются?
-
Ну есть компонент TAlWinInetHttpClient Создаю динамически несколько экземпляров. С одного через Post вхожу на сайт передавая логин и пароль. Он естественно считается подключенным уже и возвращает страничку пользователя.
Когда я прочими остальными экземплярами коннекчусь к сайту, они сразу же загружают уже эту страничку, этого же пользователя, не спрашивая у меня логин и пароль.
А хотелось бы чтобы каждый мог подключиться с каким-то своим логином и паролем и работал как отдельный пользователь сайта.
Вот не знаю как это сделать.
Конечно, расчитывать, что каждый в курсе, что за компоненты я юзаю глупо, но я думаю, что дело тут не в каком-то конкретном компоненте, а в каких-то опциях с которыми компонент подключается к инету.
-
> Конечно, расчитывать, что каждый в курсе, что за компоненты > я юзаю глупо, но я думаю, что дело тут не в каком-то конкретном > компоненте, а в каких-то опциях с которыми компонент подключается > к инету
Дело непонятно в чем. Можете предоставить логи хттп-запросов от ваших клиентов к серверу?
-
Для начала тогда механизм, наверное имеет смысл.
Для проверки подключен клиент или нет вызывается Get('сайт/my.html')
Если подключен, то возвращается страничка пользователя. Если не подключен, то возвращается страничка в которой нужно вводить логин и пароль. Ну соответственно вызывается Post('сайт/login.html',varlist)
где varlist - список переменных (логин, пароль и т.д.)
Если все успешно, то опять-таки возвращается страничка пользователя.
Далее проверяю подключение следующего клиента, то есть вызываю Get('сайт/my.html')
и возвращается страничка предыдущего подключенного клиента, вместо того, чтобы выдать очередную страничку со вводом логина и пароля.
То есть, получается возможным подключение только одного клиента в один момент времени. Для того, чтобы подключить следующего, надо сделать Get('сайт/logout.html')
Тогда при следующем подключении выдаст страничку с логином и паролем. Вот.
-
очевидно, где-то засела кука, которую видят и используют все клиенты
-
или сервер принимает только одну сессию от айпи. или по рефереру определяет, что это тот же клиент.
-
Ну вот проверил сервер. То есть вошел с разных браузеров под разными логинами. Нормально все.
-
У самого компонента не так много свойств, чтобы поиграться.
wHttpIo_Async, wHttpIo_From_Cache, wHttpIo_Offline, wHttpIo_Cache_if_net_fail, wHttpIo_Hyperlink, wHttpIo_Ignore_cert_cn_invalid, wHttpIo_Ignore_cert_date_invalid, wHttpIo_Ignore_redirect_to_http, wHttpIo_Ignore_redirect_to_https, wHttpIo_Keep_connection, wHttpIo_Need_file, wHttpIo_No_auth, wHttpIo_No_auto_redirect, wHttpIo_No_cache_write, wHttpIo_No_cookies, wHttpIo_No_ui, wHttpIo_Pragma_nocache, wHttpIo_Reload, wHttpIo_Resynchronize, wHttpIo_Secure
Пробовал ставить wHttpIo_No_cookies - вообще коннектиться перестал. По умолчанию также у него устанавливается wHttpIo_Keep_connection.
-
> Пробовал ставить wHttpIo_No_cookies - вообще коннектиться > перестал.
Значит сервер таки выдает куки. Похоже, что ваш компонент - это некий наследник TWebBrowser , что означает общие куки. Используйте не браузер, а хттп-клиент типа TIdHTTP
-
Только уточнить хочу, не "коннектиться перестал", а "логиниться перестал". Хотя в моем случае возможно, что и без разницы. Ладно, спасибо, попробую idhttp
|