From 0c4f372410d0f45c814930da84c73f65b377176b Mon Sep 17 00:00:00 2001 From: Prashant Cholachagudda Date: Thu, 16 Nov 2023 14:33:06 +0530 Subject: [PATCH] fix:Previewer connection fails from VSCode (#13630) --- .../Remote/HtmlTransport/HtmlTransport.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs index 47e89fc872..869e682940 100644 --- a/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs +++ b/src/Avalonia.DesignerSupport/Remote/HtmlTransport/HtmlTransport.cs @@ -112,7 +112,7 @@ namespace Avalonia.DesignerSupport.Remote.HtmlTransport } else { - if (req.Headers.TryGetValue("Origin", out var origin) && origin == _listenUri.OriginalString) + if (IsValidOrigin(req)) { var socket = await req.AcceptWebSocket(); SocketReceiveWorker(socket); @@ -124,12 +124,18 @@ namespace Avalonia.DesignerSupport.Remote.HtmlTransport } else { - throw new Exception("Origin doesen't match Url"); + throw new Exception("Origin doesn't match Url"); } } } } } + + bool IsValidOrigin(SimpleWebSocketHttpRequest request) + { + return request.Headers.TryGetValue("Origin", out var origin) && + (origin == _listenUri.OriginalString || origin.StartsWith("vscode-webview:")); + } async void SocketReceiveWorker(SimpleWebSocket socket) {