From 8f47762409e38be535c43a22459e3be57419c2a8 Mon Sep 17 00:00:00 2001 From: jdevito Date: Mon, 20 Feb 2023 15:27:02 -0600 Subject: [PATCH 1/2] fix: add CORS headers to all responses Added EnableCors field,used to enable CORS support. Enabled CORS in default request handler for all requests. --- .../DefaultRequestRequestHandler.cs | 9 ++++++- .../WebApiBaseRequestHandler.cs | 26 ++++++++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs index e052eb3..a2ea2c0 100644 --- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs +++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs @@ -6,5 +6,12 @@ namespace PepperDash.Core.Web.RequestHandlers /// Web API default request handler /// public class DefaultRequestRequestHandler : WebApiBaseRequestHandler - {} + { + /// + /// Constructor + /// + public DefaultRequestRequestHandler() + : base(true) + { } + } } \ No newline at end of file diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs index 6d4b41c..22d9d23 100644 --- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs +++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs @@ -14,8 +14,10 @@ namespace PepperDash.Core.Web.RequestHandlers /// /// Constructor /// - protected WebApiBaseRequestHandler() + protected WebApiBaseRequestHandler(bool enableCors) { + EnableCors = enableCors; + _handlers = new Dictionary> { {"CONNECT", HandleConnect}, @@ -30,6 +32,16 @@ namespace PepperDash.Core.Web.RequestHandlers }; } + /// + /// Constructor + /// + protected WebApiBaseRequestHandler() + : this(false) + { + } + + protected readonly bool EnableCors; + /// /// Handles CONNECT method requests /// @@ -37,7 +49,7 @@ namespace PepperDash.Core.Web.RequestHandlers protected virtual void HandleConnect(HttpCwsContext context) { context.Response.StatusCode = 501; - context.Response.StatusDescription = "Not Implemented"; + context.Response.StatusDescription = "Not Implemented"; context.Response.End(); } @@ -48,7 +60,7 @@ namespace PepperDash.Core.Web.RequestHandlers protected virtual void HandleDelete(HttpCwsContext context) { context.Response.StatusCode = 501; - context.Response.StatusDescription = "Not Implemented"; + context.Response.StatusDescription = "Not Implemented"; context.Response.End(); } @@ -142,7 +154,13 @@ namespace PepperDash.Core.Web.RequestHandlers return; } + if (EnableCors) + { + context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); + context.Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); + } + handler(context); - } + } } } \ No newline at end of file From ca648e6107ea39a322441cb21e141ebe6e473474 Mon Sep 17 00:00:00 2001 From: jdevito Date: Mon, 20 Feb 2023 16:01:32 -0600 Subject: [PATCH 2/2] fix: refactored default request handler to remove redundant reference --- Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj | 2 +- ...aultRequestRequestHandler.cs => DefaultRequestHandler.cs} | 4 ++-- .../Web/RequestHandlers/WebApiBaseRequestHandler.cs | 5 ++--- Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) rename Pepperdash Core/Pepperdash Core/Web/RequestHandlers/{DefaultRequestRequestHandler.cs => DefaultRequestHandler.cs} (65%) diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj index 510d978..ec6346d 100644 --- a/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj +++ b/Pepperdash Core/Pepperdash Core/PepperDash_Core.csproj @@ -93,7 +93,7 @@ - + diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestHandler.cs similarity index 65% rename from Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs rename to Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestHandler.cs index a2ea2c0..93cfae0 100644 --- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestRequestHandler.cs +++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/DefaultRequestHandler.cs @@ -5,12 +5,12 @@ namespace PepperDash.Core.Web.RequestHandlers /// /// Web API default request handler /// - public class DefaultRequestRequestHandler : WebApiBaseRequestHandler + public class DefaultRequestHandler : WebApiBaseRequestHandler { /// /// Constructor /// - public DefaultRequestRequestHandler() + public DefaultRequestHandler() : base(true) { } } diff --git a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs index 22d9d23..a73abd1 100644 --- a/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs +++ b/Pepperdash Core/Pepperdash Core/Web/RequestHandlers/WebApiBaseRequestHandler.cs @@ -10,6 +10,7 @@ namespace PepperDash.Core.Web.RequestHandlers public abstract class WebApiBaseRequestHandler : IHttpCwsHandler { private readonly Dictionary> _handlers; + protected readonly bool EnableCors; /// /// Constructor @@ -38,9 +39,7 @@ namespace PepperDash.Core.Web.RequestHandlers protected WebApiBaseRequestHandler() : this(false) { - } - - protected readonly bool EnableCors; + } /// /// Handles CONNECT method requests diff --git a/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs b/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs index 43efb5b..f2f8464 100644 --- a/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs +++ b/Pepperdash Core/Pepperdash Core/Web/WebApiServer.cs @@ -100,7 +100,7 @@ namespace PepperDash.Core.Web if (_server == null) _server = new HttpCwsServer(BasePath); _server.setProcessName(Key); - _server.HttpRequestHandler = new DefaultRequestRequestHandler(); + _server.HttpRequestHandler = new DefaultRequestHandler(); CrestronEnvironment.ProgramStatusEventHandler += CrestronEnvironment_ProgramStatusEventHandler; CrestronEnvironment.EthernetEventHandler += CrestronEnvironment_EthernetEventHandler;