diff --git a/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs b/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs index 7851bdc..9c3546e 100644 --- a/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs +++ b/src/DigitalData.Swagger.Proxy/Configs/OriginServerParams.cs @@ -4,6 +4,6 @@ { public required string Url { get; init; } - public Dictionary? DefaultHeaders { get; init; } + public Dictionary DefaultHeaders { get; init; } = new(); } } \ No newline at end of file diff --git a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs index c78d96d..2c68ca8 100644 --- a/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs +++ b/src/DigitalData.Swagger.Proxy/Controllers/ProxyController.cs @@ -11,12 +11,12 @@ using System.Threading.Tasks; [ApiController] public class ProxyController(IOptions originServerParamsOptions) : ControllerBase { - private readonly OriginServerParams origin = originServerParamsOptions.Value; + private readonly OriginServerParams _origin = originServerParamsOptions.Value; [HttpPost("{servicetierName}/ODataV4/{webserviceName}_CreateInvoice")] public async Task Redir([FromRoute] string servicetierName, [FromRoute] string webserviceName, [FromQuery] string company) { - var res = await origin.Url + var res = await _origin.Url .AppendPathSegment(servicetierName) .AppendPathSegment("ODataV4") .AppendPathSegment(webserviceName + "_CreateInvoice") @@ -24,9 +24,14 @@ public class ProxyController(IOptions originServerParamsOpti //.WithOAuthBearerToken("my_oauth_token") .PostAsync(); + //merge with default headers + var mergedDictionary = _origin.DefaultHeaders + .Concat(res.Headers.ToDictionary(kv => kv.Name, kv => kv.Value)) + .ToDictionary(kv => kv.Key, kv => kv.Value); + // set headers - foreach (var (Name, Value) in res.Headers) - HttpContext.Response.Headers[Name] = Value; + foreach (var header in mergedDictionary) + HttpContext.Response.Headers[header.Key] = header.Value; // set cookies foreach (var (Name, Value) in res.Cookies.ToKeyValuePairs()) diff --git a/src/DigitalData.Swagger.Proxy/appsettings.json b/src/DigitalData.Swagger.Proxy/appsettings.json index b9d7a31..6dd8d2c 100644 --- a/src/DigitalData.Swagger.Proxy/appsettings.json +++ b/src/DigitalData.Swagger.Proxy/appsettings.json @@ -9,7 +9,7 @@ "OriginServer": { "Url": "https://localhost:7248", "DefaultHeaders": { - + "foo": "bar" } } }