| | | 1 | | // Licensed to the .NET Foundation under one or more agreements. |
| | | 2 | | // The .NET Foundation licenses this file to you under the MIT license. |
| | | 3 | | |
| | | 4 | | namespace System.Net.Http.Headers |
| | | 5 | | { |
| | | 6 | | internal static class QPackStaticTable |
| | | 7 | | { |
| | | 8 | | // https://tools.ietf.org/html/draft-ietf-quic-qpack-11#appendix-A |
| | | 9 | | // TODO: can we put some of this logic into H3StaticTable and/or generate it using data that is already there? |
| | 0 | 10 | | internal static (HeaderDescriptor descriptor, string value)[] HeaderLookup { get; } = new (HeaderDescriptor desc |
| | 0 | 11 | | { |
| | 0 | 12 | | (new HeaderDescriptor(":authority"), ""), // 0 |
| | 0 | 13 | | (new HeaderDescriptor(":path"), "/"), // 1 |
| | 0 | 14 | | (new HeaderDescriptor(KnownHeaders.Age), "0"), // 2 |
| | 0 | 15 | | (new HeaderDescriptor(KnownHeaders.ContentDisposition), ""), // 3 |
| | 0 | 16 | | (new HeaderDescriptor(KnownHeaders.ContentLength), "0"), // 4 |
| | 0 | 17 | | (new HeaderDescriptor(KnownHeaders.Cookie), ""), // 5 |
| | 0 | 18 | | (new HeaderDescriptor(KnownHeaders.Date), ""), // 6 |
| | 0 | 19 | | (new HeaderDescriptor(KnownHeaders.ETag), ""), // 7 |
| | 0 | 20 | | (new HeaderDescriptor(KnownHeaders.IfModifiedSince), ""), // 8 |
| | 0 | 21 | | (new HeaderDescriptor(KnownHeaders.IfNoneMatch), ""), // 9 |
| | 0 | 22 | | (new HeaderDescriptor(KnownHeaders.LastModified), ""), // 10 |
| | 0 | 23 | | (new HeaderDescriptor(KnownHeaders.Link), ""), // 11 |
| | 0 | 24 | | (new HeaderDescriptor(KnownHeaders.Location), ""), // 12 |
| | 0 | 25 | | (new HeaderDescriptor(KnownHeaders.Referer), ""), // 13 |
| | 0 | 26 | | (new HeaderDescriptor(KnownHeaders.SetCookie), ""), // 14 |
| | 0 | 27 | | (new HeaderDescriptor(":method"), "CONNECT"), // 15 |
| | 0 | 28 | | (new HeaderDescriptor(":method"), "DELETE"), // 16 |
| | 0 | 29 | | (new HeaderDescriptor(":method"), "GET"), // 17 |
| | 0 | 30 | | (new HeaderDescriptor(":method"), "HEAD"), // 18 |
| | 0 | 31 | | (new HeaderDescriptor(":method"), "OPTIONS"), // 19 |
| | 0 | 32 | | (new HeaderDescriptor(":method"), "POST"), // 20 |
| | 0 | 33 | | (new HeaderDescriptor(":method"), "PUT"), // 21 |
| | 0 | 34 | | (new HeaderDescriptor(":scheme"), "http"), // 22 |
| | 0 | 35 | | (new HeaderDescriptor(":scheme"), "https"), // 23 |
| | 0 | 36 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "103"), // 24 |
| | 0 | 37 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "200"), // 25 |
| | 0 | 38 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "304"), // 26 |
| | 0 | 39 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "404"), // 27 |
| | 0 | 40 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "503"), // 28 |
| | 0 | 41 | | (new HeaderDescriptor(KnownHeaders.Accept), "*/*"), // 29 |
| | 0 | 42 | | (new HeaderDescriptor(KnownHeaders.Accept), "application/dns-message"), // 30 |
| | 0 | 43 | | (new HeaderDescriptor(KnownHeaders.AcceptEncoding), "gzip, deflate, br"), // 31 |
| | 0 | 44 | | (new HeaderDescriptor(KnownHeaders.AcceptRanges), "bytes"), // 32 |
| | 0 | 45 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowHeaders), "cache-control"), // 33 |
| | 0 | 46 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowHeaders), "content-type"), // 34 |
| | 0 | 47 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowOrigin), "*"), // 35 |
| | 0 | 48 | | (new HeaderDescriptor(KnownHeaders.CacheControl), "max-age=0"), // 36 |
| | 0 | 49 | | (new HeaderDescriptor(KnownHeaders.CacheControl), "max-age=2592000"), // 37 |
| | 0 | 50 | | (new HeaderDescriptor(KnownHeaders.CacheControl), "max-age=604800"), // 38 |
| | 0 | 51 | | (new HeaderDescriptor(KnownHeaders.CacheControl), "no-cache"), // 39 |
| | 0 | 52 | | (new HeaderDescriptor(KnownHeaders.CacheControl), "no-store"), // 40 |
| | 0 | 53 | | (new HeaderDescriptor(KnownHeaders.CacheControl), "public, max-age=31536000"), // 41 |
| | 0 | 54 | | (new HeaderDescriptor(KnownHeaders.ContentEncoding), "br"), // 42 |
| | 0 | 55 | | (new HeaderDescriptor(KnownHeaders.ContentEncoding), "gzip"), // 43 |
| | 0 | 56 | | (new HeaderDescriptor(KnownHeaders.ContentType), "application/dns-message"), // 44 |
| | 0 | 57 | | (new HeaderDescriptor(KnownHeaders.ContentType), "application/javascript"), // 45 |
| | 0 | 58 | | (new HeaderDescriptor(KnownHeaders.ContentType), "application/json"), // 46 |
| | 0 | 59 | | (new HeaderDescriptor(KnownHeaders.ContentType), "application/x-www-form-urlencoded"), // 47 |
| | 0 | 60 | | (new HeaderDescriptor(KnownHeaders.ContentType), "image/gif"), // 48 |
| | 0 | 61 | | (new HeaderDescriptor(KnownHeaders.ContentType), "image/jpeg"), // 49 |
| | 0 | 62 | | (new HeaderDescriptor(KnownHeaders.ContentType), "image/png"), // 50 |
| | 0 | 63 | | (new HeaderDescriptor(KnownHeaders.ContentType), "text/css"), // 51 |
| | 0 | 64 | | (new HeaderDescriptor(KnownHeaders.ContentType), "text/html; charset=utf-8"), // 52; Whitespace is correct, |
| | 0 | 65 | | (new HeaderDescriptor(KnownHeaders.ContentType), "text/plain"), // 53 |
| | 0 | 66 | | (new HeaderDescriptor(KnownHeaders.ContentType), "text/plain;charset=utf-8"), // 54; Whitespace is correct, |
| | 0 | 67 | | (new HeaderDescriptor(KnownHeaders.Range), "bytes=0-"), // 55 |
| | 0 | 68 | | (new HeaderDescriptor(KnownHeaders.StrictTransportSecurity), "max-age=31536000"), // 56 |
| | 0 | 69 | | (new HeaderDescriptor(KnownHeaders.StrictTransportSecurity), "max-age=31536000; includesubdomains"), // 57 |
| | 0 | 70 | | (new HeaderDescriptor(KnownHeaders.StrictTransportSecurity), "max-age=31536000; includesubdomains; preload") |
| | 0 | 71 | | (new HeaderDescriptor(KnownHeaders.Vary), "accept-encoding"), // 59 |
| | 0 | 72 | | (new HeaderDescriptor(KnownHeaders.Vary), "origin"), // 60 |
| | 0 | 73 | | (new HeaderDescriptor(KnownHeaders.XContentTypeOptions), "nosniff"), // 61 |
| | 0 | 74 | | (new HeaderDescriptor(KnownHeaders.XXssProtection), "1; mode=block"), // 62 |
| | 0 | 75 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "100"), // 63 |
| | 0 | 76 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "204"), // 64 |
| | 0 | 77 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "206"), // 65 |
| | 0 | 78 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "302"), // 66 |
| | 0 | 79 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "400"), // 67 |
| | 0 | 80 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "403"), // 68 |
| | 0 | 81 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "421"), // 69 |
| | 0 | 82 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "425"), // 70 |
| | 0 | 83 | | (new HeaderDescriptor(KnownHeaders.PseudoStatus), "500"), // 71 |
| | 0 | 84 | | (new HeaderDescriptor(KnownHeaders.AcceptLanguage), ""), // 72 |
| | 0 | 85 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowCredentials), "FALSE"), // 73 |
| | 0 | 86 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowCredentials), "TRUE"), // 74 |
| | 0 | 87 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowHeaders), "*"), // 75 |
| | 0 | 88 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowMethods), "get"), // 76 |
| | 0 | 89 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowMethods), "get, post, options"), // 77 |
| | 0 | 90 | | (new HeaderDescriptor(KnownHeaders.AccessControlAllowMethods), "options"), // 78 |
| | 0 | 91 | | (new HeaderDescriptor(KnownHeaders.AccessControlExposeHeaders), "content-length"), // 79 |
| | 0 | 92 | | (new HeaderDescriptor("access-control-request-headers"), "content-type"), // 80 |
| | 0 | 93 | | (new HeaderDescriptor("access-control-request-method"), "get"), // 81 |
| | 0 | 94 | | (new HeaderDescriptor("access-control-request-method"), "post"), // 82 |
| | 0 | 95 | | (new HeaderDescriptor(KnownHeaders.AltSvc), "clear"), // 83 |
| | 0 | 96 | | (new HeaderDescriptor(KnownHeaders.Authorization), ""), // 84 |
| | 0 | 97 | | (new HeaderDescriptor(KnownHeaders.ContentSecurityPolicy), "script-src 'none'; object-src 'none'; base-uri ' |
| | 0 | 98 | | (new HeaderDescriptor("early-data"), "1"), // 86 |
| | 0 | 99 | | (new HeaderDescriptor(KnownHeaders.ExpectCT), ""), // 87 |
| | 0 | 100 | | (new HeaderDescriptor("forwarded"), ""), // 88 |
| | 0 | 101 | | (new HeaderDescriptor(KnownHeaders.IfRange), ""), // 89 |
| | 0 | 102 | | (new HeaderDescriptor(KnownHeaders.Origin), ""), // 90 |
| | 0 | 103 | | (new HeaderDescriptor("purpose"), "prefetch"), // 91 |
| | 0 | 104 | | (new HeaderDescriptor(KnownHeaders.Server), ""), // 92 |
| | 0 | 105 | | (new HeaderDescriptor(KnownHeaders.TimingAllowOrigin), "*"), // 93 |
| | 0 | 106 | | (new HeaderDescriptor(KnownHeaders.UpgradeInsecureRequests), "1"), // 94 |
| | 0 | 107 | | (new HeaderDescriptor(KnownHeaders.UserAgent), ""), // 95 |
| | 0 | 108 | | (new HeaderDescriptor("x-forwarded-for"), ""), // 96 |
| | 0 | 109 | | (new HeaderDescriptor(KnownHeaders.XFrameOptions), "deny"), // 97 |
| | 0 | 110 | | (new HeaderDescriptor(KnownHeaders.XFrameOptions), "sameorigin") // 98 |
| | 0 | 111 | | }; |
| | | 112 | | } |
| | | 113 | | } |