Эта ошибка возникает если указать WebOne для всех протоколов. Пока запилена поддержка только HTTP Proxy, и больше ничего. Штатный PAC скрипт так и работает - проверяет чтобы протокол был "http:", и направляет трафик через прокси. Остальное он шлёт в DIRECT (напрямки).
Ну, а само сообщение об ошибке делается самим .NET Runtime. Точней, на виндах оно делается системным драйвером HTTP.SYS, на линях не знаю, что обрабатывает входящие HTTP подключения. Судя по тому, что Server: Microsoft-NetCore/2.0, а не Microsoft-HTTPAPI/2.0, то скорей всего обработчик вшит в сам дотнет. Эта фигня видит, что метод CONNECT, и сразу шлёт куда подальше.
На виндах этот запрос всё же проходит в WebOne, и дальше выдаётся уже проксивское сообщение "The proxy does not know the CONNECT method.". Upd: не-а, что-то поменяли, и в Windows тоже лезет системное "HTTP Error 400. The request URL is invalid.". До прокси ничего не доходит, никаких обращений даже. Всё HttpListener/HTTP.SYS в неуправляемом коде глушит.
misha_weba писал(а): ↑09.02.2023,11:43
есть ли опция подмены заголовка Server
Виндовый обработчик точно настраивается через реестр (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\). Про его аналог на *nix сходу не гуглится ничего.
misha_weba писал(а): ↑09.02.2023,11:43
Я попробовал с помощью AddResponseHeader=Server: AntiQ-WebOne-0150 в секции [Server], но это не сработало. Или это только в заданных правилах [Edit:] можно так делать ?
Только в Edit'ах работает. И (по крайней мере на Windows) всегда будет дописываться Microsoft-HTTPAPI/2.0 в конец, это багофича системного обработчика. Народ даже на IIS на такое нарывается иногда.
misha_weba писал(а): ↑09.02.2023,11:43
метод CONNECT недопилен ? // да, понимаю, что запара, но в древнем инете https всё-таки существовал =)
Да, метод CONNECT очень сложно реализовать, пока не хватает навыков и времени. Это ж по сути уже ближе к SOCKS режиму, когда организовывается дуплексное TCP+TLS соединение. Т.е. надо не только принять внутри прокси запрос, но ещё и установить "мост" между сокетами, и поднять фейковый HTTPS сервер, делающий сертификат нужного образца на нужный домен (как в ProxHttpsProxyMII).
В какой-то обозримой перспективе есть идея переписать обработчик HTTP запросов, т.е. выкинуть этот HTTPAPI, и работать напрямую с TCP сокетами. Но пока обдумываю как это буду делать. Первая попытка запилить это была в первых версиях WebOne (до 0.8.0). Тогда вышло кривовато.
Но если решу задачу, сразу удастся убить 3 зайцев - запилить основу под CONNECT, поддержку CERN режима (т.н. FTP/GOPHER/WAIS Proxy), и ещё устранить 400 ошибку в самых первых версиях WinMosaic (которые да, после WebOne 0.8.0 сломались).