2

Брандмауэр Kaspersky / Avast заблокировал сообщения, когда я использую сервер websocket (socket.io на узле.

Что можно сделать?

4 ответа4

4

Я могу на 100% сказать вам, что Avast, например, блокирует не только веб-сокеты, но и то, что я вижу из моего сокета.IO приложение также XHR-опрос и другие вещи.

Это неприемлемо, я даже тестировал на 80-м порту, и он не работает. Какой ужасный кусок программного обеспечения.

Редактировать: это список заблокированных портов антивирусами (Dead 2017-07-20)

0

Первое правило брандмауэра: он не может блокировать то, что не может чувствовать.

Брандмауэр позволяет TLS? Если так, обслуживайте контент через WSS вместо WS.

  • Обычный клиент WSS откроет вам соединение TLS (источник) и отправит вам следующее:

    GET /demo HTTP/1.1
    Upgrade: WebSocket
    Connection: Upgrade
    Host: example.com
    Origin: http://example.com
    WebSocket-Protocol: sample 
    

    Брандмауэр не может обнаружить это, потому что это по TLS.

  • Клиент HTTP-CONNECT-WSS отправит вам следующее:

    CONNECT example.com:443 HTTP/1.1
    Host: example.com 
    

    Брандмауэр видит это как еще одно соединение HTTP-CONNECT-TLS. (источник)


Примечание: веб-сокеты могут перестать работать из-за того, что промежуточные прокси-серверы, не подозревающие о веб-сокете, буферизуют соединения, даже если брандмауэр не блокирует их. То же самое верно для потоковой передачи HTTP "кометы".
0

Многие интернет-провайдеры блокируют порт 80, чтобы запретить своим клиентам размещать веб-серверы на своих домашних компьютерах.

Возможно, вам не удастся разблокировать порт 80 у вашего интернет-провайдера.

Также, насколько мне известно, Avast не является брандмауэром.

0

Вы можете попробовать использовать порт 443 (который используется для https), если это возможно в вашем случае.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .