TsgcWebSocketHTTPServer › 属性 › SecurityOptions
定义握手准入规则:允许的来源和 RFC 6455 握手验证。
property SecurityOptions: TsgcWSSecurity_Options read FSecurityOptions write SetSecurityOptions;
| 名称 | 默认 | 描述 |
|---|---|---|
OriginsAllowed | "" | 为浏览器 WebSocket 握手接受的来源的逗号分隔白名单。为空则允许所有来源。 |
EnforceWebSocketVersion | True | 拒绝其 Sec-WebSocket-Version 不是 13 的 RFC 6455 握手。 |
ValidateWebSocketKey | True | 拒绝其 Sec-WebSocket-Key 不是有效的 16 字节 base64 随机数的 RFC 6455 握手。 |
使用 OriginsAllowed 限制服务器接受 WebSocket 握手的来源。默认情况下允许所有来源;设置任意非空值将启用白名单,服务器将关闭 Origin 头不匹配的连接。模式支持端口通配符(例如 http://127.0.0.1:5555 指定单一来源,或 http://127.0.0.1:* 接受该主机的任意端口)。多个来源用逗号分隔。将 OriginsAllowed 设置为空字符串可恢复宽松的默认设置。
EnforceWebSocketVersion 和 ValidateWebSocketKey 强化 WebSocket 升级本身,并默认启用。当 EnforceWebSocketVersion 处于活动状态时,对于请求 13 以外版本的握手,服务器会以 HTTP 426 Upgrade Required 和 Sec-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;