веб-сервер заставляет браузер открывать только одно параллельное соединение - PullRequest
0 голосов
/ 07 августа 2011

Здравствуйте, я пытаюсь написать веб-сервер на C #.
Сервер будет динамически создавать веб-сайт на основе определенных мной шаблонов.
У меня проблема в том, что вы можете получить доступ к веб-странице только после ввода пароля.
Поэтому я решил сделать браузер открытым для поддержания соединения, пропуская через него каждый запрос.
Затем у меня есть контроль над вошедшими в систему клиентами, а не вошедшими в систему клиентами. Теперь проблема в том, что Firefox и Google Chrome, когда дело доходит до запроса изображений на веб-сайте, они просто открывают другое соединение с того же IP-адреса, но с другого порта.
Мой веб-сервер считает, что это еще один клиент, и отправляет http-страницу входа вместо запрошенного изображения.
Таким образом, каждый раз, когда веб-сайт загружается, на самом деле отправляется только 1 - 4 изображения.

Теперь мой вопрос: есть ли способ заставить браузер НЕ открывать параллельные соединения?
Или, если это невозможно, как мне решить проблему?

Для тех, кому нравится видеть здесь некоторый код, вот как выглядит ядро ​​сервера, просто чтобы понять мою проблему:

void ThreadStart()
{
    while (true)
    {
        RunClient(listener.AcceptTcpClient());
    }
}
void RunClient(TcpClient c)
{
        Thread tht = new Thread(new ParameterizedThreadStart(RunIt));
        tht.IsBackground = true;
        tht.Start(c);//The login page is getting sent...
        thtt.Add(tht);
}

Заранее спасибо, Алекс

1 Ответ

3 голосов
/ 07 августа 2011

Аутентификация HTTP-соединения, а не отдельных запросов, является неправильной, неправильной, неправильной. Даже если бы вы могли заставить браузер повторно использовать одно соединение (чего нельзя, потому что HTTP работает не так), вы не сможете рассчитывать на то, что его соблюдают прокси или прозрачные веб-кэши.

Это (некоторые из) то, для чего были изобретены куки. Используйте их или какой-то идентификатор сеанса, встроенный в URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...