From 4367c63d89ce4de11ccfdc8780a919e225f94e9e Mon Sep 17 00:00:00 2001 From: Tom Linton Date: Sat, 6 Jan 2024 13:39:16 +1300 Subject: [PATCH] allow WebSocket casing for upgrade header (#709) --- poem/src/web/websocket/extractor.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/poem/src/web/websocket/extractor.rs b/poem/src/web/websocket/extractor.rs index 8d712e2755..13f9ab7fde 100644 --- a/poem/src/web/websocket/extractor.rs +++ b/poem/src/web/websocket/extractor.rs @@ -28,8 +28,12 @@ pub struct WebSocket { impl WebSocket { async fn internal_from_request(req: &Request) -> Result { + let is_valid_upgrade_header = req.headers().get(header::UPGRADE) + == Some(&HeaderValue::from_static("websocket")) + || req.headers().get(header::UPGRADE) == Some(&HeaderValue::from_static("WebSocket")); + if req.method() != Method::GET - || req.headers().get(header::UPGRADE) != Some(&HeaderValue::from_static("websocket")) + || !is_valid_upgrade_header || req.headers().get(header::SEC_WEBSOCKET_VERSION) != Some(&HeaderValue::from_static("13")) {