Согласно спецификации сервер должен закрыть соединение с ошибкой если получил незамаскированный фрейм. Например, gorilla/websocket строго этому следует, даже если соединение зашифровано (wss://, WebSocket over SSL/TLS).
В нашем случае мы довольно вольно с этим обращаемся.
Нам не нужно проверять наличие маски, если маска отсутствует, то размер данных не будет соответствовать заявленному или следующий фрейм будет "кривым" и тогда сервер закроет соединение.
Все эти сложности связаны с безопасностью. Чтобы злоумышленники не подделывали запросы, не атаковали прокси-сервера ("cross-protocol attacks", "cache poisoning").
Sec-WebSocket-Accept также позволяет убедиться в том, что сервер действительно поддерживает WebSocket протокол (What is Sec-WebSocket-Key for?).
Согласно спецификации сервер должен закрыть соединение с ошибкой если получил незамаскированный фрейм. Например, gorilla/websocket строго этому следует, даже если соединение зашифровано (wss://, WebSocket over SSL/TLS).
В нашем случае мы довольно вольно с этим обращаемся.
Нам не нужно проверять наличие маски, если маска отсутствует, то размер данных не будет соответствовать заявленному или следующий фрейм будет "кривым" и тогда сервер закроет соединение.
Все эти сложности связаны с безопасностью. Чтобы злоумышленники не подделывали запросы, не атаковали прокси-сервера ("cross-protocol attacks", "cache poisoning").
Sec-WebSocket-Accept также позволяет убедиться в том, что сервер действительно поддерживает WebSocket протокол (What is Sec-WebSocket-Key for?).