From 57943eab0aca5dca5cf391a49cbe78f36f9e0724 Mon Sep 17 00:00:00 2001 From: Kahbazi Date: Tue, 15 Dec 2020 22:04:29 +0330 Subject: [PATCH] Add baggage to known headers --- .../Internal/Http/HttpHeaders.Generated.cs | 250 +++++++++++++----- src/Servers/Kestrel/shared/KnownHeaders.cs | 3 +- 2 files changed, 189 insertions(+), 64 deletions(-) diff --git a/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs b/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs index 95942ab1e1d5..bc37696cb529 100644 --- a/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs +++ b/src/Servers/Kestrel/Core/src/Internal/Http/HttpHeaders.Generated.cs @@ -35,6 +35,7 @@ internal enum KnownHeaderType AltSvc, Authority, Authorization, + Baggage, CacheControl, Connection, ContentEncoding, @@ -1006,20 +1007,37 @@ public StringValues HeaderTraceState _headers._TraceState = value; } } - public StringValues HeaderOrigin + public StringValues HeaderBaggage { get { StringValues value = default; if ((_bits & 0x20000000000000L) != 0) { - value = _headers._Origin; + value = _headers._Baggage; } return value; } set { _bits |= 0x20000000000000L; + _headers._Baggage = value; + } + } + public StringValues HeaderOrigin + { + get + { + StringValues value = default; + if ((_bits & 0x40000000000000L) != 0) + { + value = _headers._Origin; + } + return value; + } + set + { + _bits |= 0x40000000000000L; _headers._Origin = value; } } @@ -1028,7 +1046,7 @@ public StringValues HeaderAccessControlRequestMethod get { StringValues value = default; - if ((_bits & 0x40000000000000L) != 0) + if ((_bits & 0x80000000000000L) != 0) { value = _headers._AccessControlRequestMethod; } @@ -1036,7 +1054,7 @@ public StringValues HeaderAccessControlRequestMethod } set { - _bits |= 0x40000000000000L; + _bits |= 0x80000000000000L; _headers._AccessControlRequestMethod = value; } } @@ -1045,7 +1063,7 @@ public StringValues HeaderAccessControlRequestHeaders get { StringValues value = default; - if ((_bits & 0x80000000000000L) != 0) + if ((_bits & 0x100000000000000L) != 0) { value = _headers._AccessControlRequestHeaders; } @@ -1053,7 +1071,7 @@ public StringValues HeaderAccessControlRequestHeaders } set { - _bits |= 0x80000000000000L; + _bits |= 0x100000000000000L; _headers._AccessControlRequestHeaders = value; } } @@ -1306,7 +1324,7 @@ protected override bool TryGetValueFast(string key, out StringValues value) } if (ReferenceEquals(HeaderNames.Origin, key)) { - if ((_bits & 0x20000000000000L) != 0) + if ((_bits & 0x40000000000000L) != 0) { value = _headers._Origin; return true; @@ -1352,7 +1370,7 @@ protected override bool TryGetValueFast(string key, out StringValues value) } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000000000L) != 0) + if ((_bits & 0x40000000000000L) != 0) { value = _headers._Origin; return true; @@ -1426,6 +1444,15 @@ protected override bool TryGetValueFast(string key, out StringValues value) } return false; } + if (ReferenceEquals(HeaderNames.Baggage, key)) + { + if ((_bits & 0x20000000000000L) != 0) + { + value = _headers._Baggage; + return true; + } + return false; + } if (HeaderNames.Trailer.Equals(key, StringComparison.OrdinalIgnoreCase)) { @@ -1490,6 +1517,15 @@ protected override bool TryGetValueFast(string key, out StringValues value) } return false; } + if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + if ((_bits & 0x20000000000000L) != 0) + { + value = _headers._Baggage; + return true; + } + return false; + } break; } case 8: @@ -2173,7 +2209,7 @@ protected override bool TryGetValueFast(string key, out StringValues value) { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - if ((_bits & 0x40000000000000L) != 0) + if ((_bits & 0x80000000000000L) != 0) { value = _headers._AccessControlRequestMethod; return true; @@ -2183,7 +2219,7 @@ protected override bool TryGetValueFast(string key, out StringValues value) if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000000000L) != 0) + if ((_bits & 0x80000000000000L) != 0) { value = _headers._AccessControlRequestMethod; return true; @@ -2196,7 +2232,7 @@ protected override bool TryGetValueFast(string key, out StringValues value) { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - if ((_bits & 0x80000000000000L) != 0) + if ((_bits & 0x100000000000000L) != 0) { value = _headers._AccessControlRequestHeaders; return true; @@ -2206,7 +2242,7 @@ protected override bool TryGetValueFast(string key, out StringValues value) if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000000000L) != 0) + if ((_bits & 0x100000000000000L) != 0) { value = _headers._AccessControlRequestHeaders; return true; @@ -2380,7 +2416,7 @@ protected override void SetValueFast(string key, StringValues value) } if (ReferenceEquals(HeaderNames.Origin, key)) { - _bits |= 0x20000000000000L; + _bits |= 0x40000000000000L; _headers._Origin = value; return; } @@ -2411,7 +2447,7 @@ protected override void SetValueFast(string key, StringValues value) } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x20000000000000L; + _bits |= 0x40000000000000L; _headers._Origin = value; return; } @@ -2461,6 +2497,12 @@ protected override void SetValueFast(string key, StringValues value) _headers._Referer = value; return; } + if (ReferenceEquals(HeaderNames.Baggage, key)) + { + _bits |= 0x20000000000000L; + _headers._Baggage = value; + return; + } if (HeaderNames.Trailer.Equals(key, StringComparison.OrdinalIgnoreCase)) { @@ -2504,6 +2546,12 @@ protected override void SetValueFast(string key, StringValues value) _headers._Referer = value; return; } + if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + _bits |= 0x20000000000000L; + _headers._Baggage = value; + return; + } break; } case 8: @@ -2981,14 +3029,14 @@ protected override void SetValueFast(string key, StringValues value) { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - _bits |= 0x40000000000000L; + _bits |= 0x80000000000000L; _headers._AccessControlRequestMethod = value; return; } if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x40000000000000L; + _bits |= 0x80000000000000L; _headers._AccessControlRequestMethod = value; return; } @@ -2998,14 +3046,14 @@ protected override void SetValueFast(string key, StringValues value) { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - _bits |= 0x80000000000000L; + _bits |= 0x100000000000000L; _headers._AccessControlRequestHeaders = value; return; } if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - _bits |= 0x80000000000000L; + _bits |= 0x100000000000000L; _headers._AccessControlRequestHeaders = value; return; } @@ -3264,9 +3312,9 @@ protected override bool AddValueFast(string key, StringValues value) } if (ReferenceEquals(HeaderNames.Origin, key)) { - if ((_bits & 0x20000000000000L) == 0) + if ((_bits & 0x40000000000000L) == 0) { - _bits |= 0x20000000000000L; + _bits |= 0x40000000000000L; _headers._Origin = value; return true; } @@ -3315,9 +3363,9 @@ protected override bool AddValueFast(string key, StringValues value) } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000000000L) == 0) + if ((_bits & 0x40000000000000L) == 0) { - _bits |= 0x20000000000000L; + _bits |= 0x40000000000000L; _headers._Origin = value; return true; } @@ -3397,6 +3445,16 @@ protected override bool AddValueFast(string key, StringValues value) } return false; } + if (ReferenceEquals(HeaderNames.Baggage, key)) + { + if ((_bits & 0x20000000000000L) == 0) + { + _bits |= 0x20000000000000L; + _headers._Baggage = value; + return true; + } + return false; + } if (HeaderNames.Trailer.Equals(key, StringComparison.OrdinalIgnoreCase)) { @@ -3468,6 +3526,16 @@ protected override bool AddValueFast(string key, StringValues value) } return false; } + if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + if ((_bits & 0x20000000000000L) == 0) + { + _bits |= 0x20000000000000L; + _headers._Baggage = value; + return true; + } + return false; + } break; } case 8: @@ -4217,9 +4285,9 @@ protected override bool AddValueFast(string key, StringValues value) { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - if ((_bits & 0x40000000000000L) == 0) + if ((_bits & 0x80000000000000L) == 0) { - _bits |= 0x40000000000000L; + _bits |= 0x80000000000000L; _headers._AccessControlRequestMethod = value; return true; } @@ -4228,9 +4296,9 @@ protected override bool AddValueFast(string key, StringValues value) if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000000000L) == 0) + if ((_bits & 0x80000000000000L) == 0) { - _bits |= 0x40000000000000L; + _bits |= 0x80000000000000L; _headers._AccessControlRequestMethod = value; return true; } @@ -4242,9 +4310,9 @@ protected override bool AddValueFast(string key, StringValues value) { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - if ((_bits & 0x80000000000000L) == 0) + if ((_bits & 0x100000000000000L) == 0) { - _bits |= 0x80000000000000L; + _bits |= 0x100000000000000L; _headers._AccessControlRequestHeaders = value; return true; } @@ -4253,9 +4321,9 @@ protected override bool AddValueFast(string key, StringValues value) if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000000000L) == 0) + if ((_bits & 0x100000000000000L) == 0) { - _bits |= 0x80000000000000L; + _bits |= 0x100000000000000L; _headers._AccessControlRequestHeaders = value; return true; } @@ -4516,9 +4584,9 @@ protected override bool RemoveFast(string key) } if (ReferenceEquals(HeaderNames.Origin, key)) { - if ((_bits & 0x20000000000000L) != 0) + if ((_bits & 0x40000000000000L) != 0) { - _bits &= ~0x20000000000000L; + _bits &= ~0x40000000000000L; _headers._Origin = default(StringValues); return true; } @@ -4567,9 +4635,9 @@ protected override bool RemoveFast(string key) } if (HeaderNames.Origin.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x20000000000000L) != 0) + if ((_bits & 0x40000000000000L) != 0) { - _bits &= ~0x20000000000000L; + _bits &= ~0x40000000000000L; _headers._Origin = default(StringValues); return true; } @@ -4649,6 +4717,16 @@ protected override bool RemoveFast(string key) } return false; } + if (ReferenceEquals(HeaderNames.Baggage, key)) + { + if ((_bits & 0x20000000000000L) != 0) + { + _bits &= ~0x20000000000000L; + _headers._Baggage = default(StringValues); + return true; + } + return false; + } if (HeaderNames.Trailer.Equals(key, StringComparison.OrdinalIgnoreCase)) { @@ -4720,6 +4798,16 @@ protected override bool RemoveFast(string key) } return false; } + if (HeaderNames.Baggage.Equals(key, StringComparison.OrdinalIgnoreCase)) + { + if ((_bits & 0x20000000000000L) != 0) + { + _bits &= ~0x20000000000000L; + _headers._Baggage = default(StringValues); + return true; + } + return false; + } break; } case 8: @@ -5469,9 +5557,9 @@ protected override bool RemoveFast(string key) { if (ReferenceEquals(HeaderNames.AccessControlRequestMethod, key)) { - if ((_bits & 0x40000000000000L) != 0) + if ((_bits & 0x80000000000000L) != 0) { - _bits &= ~0x40000000000000L; + _bits &= ~0x80000000000000L; _headers._AccessControlRequestMethod = default(StringValues); return true; } @@ -5480,9 +5568,9 @@ protected override bool RemoveFast(string key) if (HeaderNames.AccessControlRequestMethod.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x40000000000000L) != 0) + if ((_bits & 0x80000000000000L) != 0) { - _bits &= ~0x40000000000000L; + _bits &= ~0x80000000000000L; _headers._AccessControlRequestMethod = default(StringValues); return true; } @@ -5494,9 +5582,9 @@ protected override bool RemoveFast(string key) { if (ReferenceEquals(HeaderNames.AccessControlRequestHeaders, key)) { - if ((_bits & 0x80000000000000L) != 0) + if ((_bits & 0x100000000000000L) != 0) { - _bits &= ~0x80000000000000L; + _bits &= ~0x100000000000000L; _headers._AccessControlRequestHeaders = default(StringValues); return true; } @@ -5505,9 +5593,9 @@ protected override bool RemoveFast(string key) if (HeaderNames.AccessControlRequestHeaders.Equals(key, StringComparison.OrdinalIgnoreCase)) { - if ((_bits & 0x80000000000000L) != 0) + if ((_bits & 0x100000000000000L) != 0) { - _bits &= ~0x80000000000000L; + _bits &= ~0x100000000000000L; _headers._AccessControlRequestHeaders = default(StringValues); return true; } @@ -6055,7 +6143,7 @@ private void Clear(long bitsToClear) if ((tempBits & 0x20000000000000L) != 0) { - _headers._Origin = default; + _headers._Baggage = default; if((tempBits & ~0x20000000000000L) == 0) { return; @@ -6065,7 +6153,7 @@ private void Clear(long bitsToClear) if ((tempBits & 0x40000000000000L) != 0) { - _headers._AccessControlRequestMethod = default; + _headers._Origin = default; if((tempBits & ~0x40000000000000L) == 0) { return; @@ -6075,7 +6163,7 @@ private void Clear(long bitsToClear) if ((tempBits & 0x80000000000000L) != 0) { - _headers._AccessControlRequestHeaders = default; + _headers._AccessControlRequestMethod = default; if((tempBits & ~0x80000000000000L) == 0) { return; @@ -6083,6 +6171,16 @@ private void Clear(long bitsToClear) tempBits &= ~0x80000000000000L; } + if ((tempBits & 0x100000000000000L) != 0) + { + _headers._AccessControlRequestHeaders = default; + if((tempBits & ~0x100000000000000L) == 0) + { + return; + } + tempBits &= ~0x100000000000000L; + } + } protected override bool CopyToFast(KeyValuePair[] array, int arrayIndex) @@ -6575,7 +6673,7 @@ protected override bool CopyToFast(KeyValuePair[] array, i { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.Origin, _headers._Origin); + array[arrayIndex] = new KeyValuePair(HeaderNames.Baggage, _headers._Baggage); ++arrayIndex; } if ((_bits & 0x40000000000000L) != 0) @@ -6584,10 +6682,19 @@ protected override bool CopyToFast(KeyValuePair[] array, i { return false; } - array[arrayIndex] = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _headers._AccessControlRequestMethod); + array[arrayIndex] = new KeyValuePair(HeaderNames.Origin, _headers._Origin); ++arrayIndex; } if ((_bits & 0x80000000000000L) != 0) + { + if (arrayIndex == array.Length) + { + return false; + } + array[arrayIndex] = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _headers._AccessControlRequestMethod); + ++arrayIndex; + } + if ((_bits & 0x100000000000000L) != 0) { if (arrayIndex == array.Length) { @@ -6707,7 +6814,7 @@ public unsafe void Append(ReadOnlySpan name, ReadOnlySpan value) } else if ((firstTerm6 == 0x4749524fu) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4e49u)) { - flag = 0x20000000000000L; + flag = 0x40000000000000L; values = ref _headers._Origin; nameStr = HeaderNames.Origin; } @@ -6731,6 +6838,12 @@ public unsafe void Append(ReadOnlySpan name, ReadOnlySpan value) values = ref _headers._Scheme; nameStr = HeaderNames.Scheme; } + else if (((Unsafe.ReadUnaligned(ref nameStart) & 0xdfdfdfdfu) == 0x47474142u) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4741u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x45u)) + { + flag = 0x20000000000000L; + values = ref _headers._Baggage; + nameStr = HeaderNames.Baggage; + } else if (((Unsafe.ReadUnaligned(ref nameStart) & 0xdfdfdfdfu) == 0x49505845u) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ushort)))) & 0xdfdfu) == 0x4552u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)6) & 0xdfu) == 0x53u)) { flag = 0x40000L; @@ -7007,7 +7120,7 @@ public unsafe void Append(ReadOnlySpan name, ReadOnlySpan value) case 29: if (((Unsafe.ReadUnaligned(ref nameStart) & 0xdfffdfdfdfdfdfdfuL) == 0x432d535345434341uL) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfffdfdfdfdfdfdfuL) == 0x522d4c4f52544e4fuL) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ulong)))) & 0xdfffdfdfdfdfdfdfuL) == 0x4d2d545345555145uL) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x4f485445u) && ((Unsafe.AddByteOffset(ref nameStart, (IntPtr)28) & 0xdfu) == 0x44u)) { - flag = 0x40000000000000L; + flag = 0x80000000000000L; values = ref _headers._AccessControlRequestMethod; nameStr = HeaderNames.AccessControlRequestMethod; } @@ -7015,7 +7128,7 @@ public unsafe void Append(ReadOnlySpan name, ReadOnlySpan value) case 30: if (((Unsafe.ReadUnaligned(ref nameStart) & 0xdfffdfdfdfdfdfdfuL) == 0x432d535345434341uL) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)sizeof(ulong))) & 0xdfffdfdfdfdfdfdfuL) == 0x522d4c4f52544e4fuL) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(2 * sizeof(ulong)))) & 0xdfffdfdfdfdfdfdfuL) == 0x482d545345555145uL) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(6 * sizeof(uint)))) & 0xdfdfdfdfu) == 0x45444145u) && ((Unsafe.ReadUnaligned(ref Unsafe.AddByteOffset(ref nameStart, (IntPtr)(14 * sizeof(ushort)))) & 0xdfdfu) == 0x5352u)) { - flag = 0x80000000000000L; + flag = 0x100000000000000L; values = ref _headers._AccessControlRequestHeaders; nameStr = HeaderNames.AccessControlRequestHeaders; } @@ -7371,6 +7484,7 @@ private struct HeaderReferences public StringValues _CorrelationContext; public StringValues _TraceParent; public StringValues _TraceState; + public StringValues _Baggage; public StringValues _Origin; public StringValues _AccessControlRequestMethod; public StringValues _AccessControlRequestHeaders; @@ -7491,12 +7605,14 @@ public bool MoveNext() case 52: goto HeaderTraceState; case 53: - goto HeaderOrigin; + goto HeaderBaggage; case 54: - goto HeaderAccessControlRequestMethod; + goto HeaderOrigin; case 55: - goto HeaderAccessControlRequestHeaders; + goto HeaderAccessControlRequestMethod; case 56: + goto HeaderAccessControlRequestHeaders; + case 57: goto HeaderContentLength; default: goto ExtraHeaders; @@ -7926,36 +8042,44 @@ public bool MoveNext() _next = 53; return true; } - HeaderOrigin: // case 53 + HeaderBaggage: // case 53 if ((_bits & 0x20000000000000L) != 0) { - _current = new KeyValuePair(HeaderNames.Origin, _collection._headers._Origin); - _currentKnownType = KnownHeaderType.Origin; + _current = new KeyValuePair(HeaderNames.Baggage, _collection._headers._Baggage); + _currentKnownType = KnownHeaderType.Baggage; _next = 54; return true; } - HeaderAccessControlRequestMethod: // case 54 + HeaderOrigin: // case 54 if ((_bits & 0x40000000000000L) != 0) { - _current = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _collection._headers._AccessControlRequestMethod); - _currentKnownType = KnownHeaderType.AccessControlRequestMethod; + _current = new KeyValuePair(HeaderNames.Origin, _collection._headers._Origin); + _currentKnownType = KnownHeaderType.Origin; _next = 55; return true; } - HeaderAccessControlRequestHeaders: // case 55 + HeaderAccessControlRequestMethod: // case 55 if ((_bits & 0x80000000000000L) != 0) + { + _current = new KeyValuePair(HeaderNames.AccessControlRequestMethod, _collection._headers._AccessControlRequestMethod); + _currentKnownType = KnownHeaderType.AccessControlRequestMethod; + _next = 56; + return true; + } + HeaderAccessControlRequestHeaders: // case 56 + if ((_bits & 0x100000000000000L) != 0) { _current = new KeyValuePair(HeaderNames.AccessControlRequestHeaders, _collection._headers._AccessControlRequestHeaders); _currentKnownType = KnownHeaderType.AccessControlRequestHeaders; - _next = 56; + _next = 57; return true; } - HeaderContentLength: // case 56 + HeaderContentLength: // case 57 if (_collection._contentLength.HasValue) { _current = new KeyValuePair(HeaderNames.ContentLength, HeaderUtilities.FormatNonNegativeInt64(_collection._contentLength.Value)); _currentKnownType = KnownHeaderType.ContentLength; - _next = 57; + _next = 58; return true; } ExtraHeaders: diff --git a/src/Servers/Kestrel/shared/KnownHeaders.cs b/src/Servers/Kestrel/shared/KnownHeaders.cs index 176108eca8b4..16d65a833d1a 100644 --- a/src/Servers/Kestrel/shared/KnownHeaders.cs +++ b/src/Servers/Kestrel/shared/KnownHeaders.cs @@ -108,7 +108,8 @@ static KnownHeaders() "Request-Id", "Correlation-Context", "TraceParent", - "TraceState" + "TraceState", + "Baggage" }) .Concat(corsRequestHeaders) .Select((header, index) => new KnownHeader