TsgcWebSocketHTTPServer属性 › SecurityOptions

SecurityOptions 属性

定义握手准入规则:允许的来源和 RFC 6455 握手验证。

语法

property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;

成员

名称默认描述
OriginsAllowed""为浏览器 WebSocket 握手接受的来源的逗号分隔白名单。为空则允许所有来源。
EnforceWebSocketVersionTrue拒绝其 Sec-WebSocket-Version 不是 13 的 RFC 6455 握手。
ValidateWebSocketKeyTrue拒绝其 Sec-WebSocket-Key 不是有效的 16 字节 base64 随机数的 RFC 6455 握手。

备注

使用 OriginsAllowed 限制服务器接受 WebSocket 握手的来源。默认情况下允许所有来源;设置任意非空值将启用白名单,服务器将关闭 Origin 头不匹配的连接。模式支持端口通配符(例如 http://127.0.0.1:5555 指定单一来源,或 http://127.0.0.1:* 接受该主机的任意端口)。多个来源用逗号分隔。将 OriginsAllowed 设置为空字符串可恢复宽松的默认设置。

EnforceWebSocketVersionValidateWebSocketKey 强化 WebSocket 升级本身,并默认启用。当 EnforceWebSocketVersion 处于活动状态时,对于请求 13 以外版本的握手,服务器会以 HTTP 426 Upgrade RequiredSec-WebSocket-Version: 13 标头作出响应,而不是完成升级。当 ValidateWebSocketKey 处于活动状态时,对于 Sec-WebSocket-Key 缺失或不是按 RFC 6455 要求解码为 16 字节的 24 字符 base64 值的任何握手,服务器会以 HTTP 400 Bad Request 拒绝。这两项检查仅适用于 RFC 6455 路径,因此旧版 Hixie76 客户端不受影响。仅当您必须与不符合规范的客户端互操作时,才将任一项设置为 False

TsgcWebSocketServer 和 http.sys 服务器 TsgcWebSocketServer_HTTPAPI 上提供相同的选项。要限制入站消息的大小,请参阅 MaxMessageSize

示例


oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SecurityOptions.OriginsAllowed := 'http://127.0.0.1:*';
oServer.SecurityOptions.EnforceWebSocketVersion := true;
oServer.SecurityOptions.ValidateWebSocketKey := true;
oServer.Active := true;

返回属性