|
@@ -5,6 +5,7 @@ using Microsoft.Extensions.Primitives;
|
|
|
using System.Net;
|
|
|
using System.Net.WebSockets;
|
|
|
using System.Text;
|
|
|
+using static System.Runtime.InteropServices.JavaScript.JSType;
|
|
|
|
|
|
namespace EVCB_OCPP.WSServer.Service.WsService;
|
|
|
|
|
@@ -60,15 +61,8 @@ public class WebsocketService<T> where T : WsSession
|
|
|
data.AuthHeader = context?.Request?.Headers?.Authorization;
|
|
|
//data.Origin = context.Request.Scheme;
|
|
|
|
|
|
- var origin = context.Request.Headers.Origin.FirstOrDefault();
|
|
|
- try
|
|
|
- {
|
|
|
- data.UriScheme = new Uri(origin).Scheme;
|
|
|
- }
|
|
|
- catch
|
|
|
- {
|
|
|
- data.UriScheme = origin;
|
|
|
- }
|
|
|
+ data.UriScheme = GetScheme(context);
|
|
|
+
|
|
|
|
|
|
try
|
|
|
{
|
|
@@ -92,6 +86,29 @@ public class WebsocketService<T> where T : WsSession
|
|
|
await data.EndConnSemaphore.WaitAsync();
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ private string GetScheme(HttpContext context)
|
|
|
+ {
|
|
|
+ string toReturn = string.Empty;
|
|
|
+
|
|
|
+ if (context.Request.Headers.ContainsKey("x-original-host"))
|
|
|
+ {
|
|
|
+ toReturn = new Uri(context.Request.Headers["x-original-host"]).Scheme;
|
|
|
+ return toReturn;
|
|
|
+ }
|
|
|
+
|
|
|
+ var origin = context.Request.Headers.Origin.FirstOrDefault();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ toReturn = new Uri(origin).Scheme;
|
|
|
+ return toReturn;
|
|
|
+ }
|
|
|
+ catch
|
|
|
+ {
|
|
|
+ }
|
|
|
+
|
|
|
+ return toReturn;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public enum CloseReason
|