В конечном счете, я хочу блокировать загрузки в элементе управления .NET WebBrowser , фактически ограничивая его отображением HTML, изображений, сценариев и т.п., но никогда, никогда не отображать диалоговое окно «Сохранить как» для пользователя.
Решение, предложенное в ответ на этот вопрос, состояло в том, чтобы подключить собственный прокси-сервер, который проверяет ответы и отфильтровывает все, что может привести к запросу на загрузку. Как я могу реализовать такой прокси в своем приложении .NET? Я не хочу устанавливать стороннее программное обеспечение или библиотеки.
Я нашел класс HttpListener, но есть две проблемы с ним:
- Слушателю требуется предопределенный набор префиксов, которые его запускают. Однако я бы предпочел не жестко кодировать имена хостов или номера портов в своем приложении и оставить его универсальным.
- Мне пришлось бы реализовать код, который выполняет фактический запрос самостоятельно - нет ли чего-то, что делает это для меня, где я могу просто подключиться к строке, изучить содержимое ответа и изменить его по мере необходимости (например, фильтр запроса в J2EE делает на стороне сервера)?
Обновлять
Хорошо, я думаю, мне нужно прояснить это: мое приложение .NET (богатый клиент) используется в нескольких проектах, которые также имеют веб-приложения. Приложение .NET включает повторно используемую универсальную форму с элементом управления WebBrowser. Другие разработчики используют эту форму для интеграции доступа к своим веб-приложениям в приложение .NET.
Я хочу заблокировать загрузку, поэтому я хочу, чтобы моя форма WebBrowser перехватывала весь трафик и гарантировала, что он не приведет к диалоговому окну «Сохранить как». Таким образом...
- Я не знаю, какие имена хостов будут
- Веб-браузер указывает на настоящие URL-адреса, пользователь щелкает обычные ссылки, запускает JavaScript... все это обслуживается веб-приложением.
- Если бы веб-браузер указывал на локальный хост (как было предложено), мне пришлось бы анализировать ответы и переписывать все ссылки, чтобы они снова указывали на локальный хост, сохраняя исходный URL-адрес. Я не хочу проходить через эти хлопоты.