1'use strict' 2 3/** @type {Record<string, string | undefined>} */ 4const headerNameLowerCasedRecord = {} 5 6// https://developer.mozilla.org/docs/Web/HTTP/Headers 7const wellknownHeaderNames = [ 8 'Accept', 9 'Accept-Encoding', 10 'Accept-Language', 11 'Accept-Ranges', 12 'Access-Control-Allow-Credentials', 13 'Access-Control-Allow-Headers', 14 'Access-Control-Allow-Methods', 15 'Access-Control-Allow-Origin', 16 'Access-Control-Expose-Headers', 17 'Access-Control-Max-Age', 18 'Access-Control-Request-Headers', 19 'Access-Control-Request-Method', 20 'Age', 21 'Allow', 22 'Alt-Svc', 23 'Alt-Used', 24 'Authorization', 25 'Cache-Control', 26 'Clear-Site-Data', 27 'Connection', 28 'Content-Disposition', 29 'Content-Encoding', 30 'Content-Language', 31 'Content-Length', 32 'Content-Location', 33 'Content-Range', 34 'Content-Security-Policy', 35 'Content-Security-Policy-Report-Only', 36 'Content-Type', 37 'Cookie', 38 'Cross-Origin-Embedder-Policy', 39 'Cross-Origin-Opener-Policy', 40 'Cross-Origin-Resource-Policy', 41 'Date', 42 'Device-Memory', 43 'Downlink', 44 'ECT', 45 'ETag', 46 'Expect', 47 'Expect-CT', 48 'Expires', 49 'Forwarded', 50 'From', 51 'Host', 52 'If-Match', 53 'If-Modified-Since', 54 'If-None-Match', 55 'If-Range', 56 'If-Unmodified-Since', 57 'Keep-Alive', 58 'Last-Modified', 59 'Link', 60 'Location', 61 'Max-Forwards', 62 'Origin', 63 'Permissions-Policy', 64 'Pragma', 65 'Proxy-Authenticate', 66 'Proxy-Authorization', 67 'RTT', 68 'Range', 69 'Referer', 70 'Referrer-Policy', 71 'Refresh', 72 'Retry-After', 73 'Sec-WebSocket-Accept', 74 'Sec-WebSocket-Extensions', 75 'Sec-WebSocket-Key', 76 'Sec-WebSocket-Protocol', 77 'Sec-WebSocket-Version', 78 'Server', 79 'Server-Timing', 80 'Service-Worker-Allowed', 81 'Service-Worker-Navigation-Preload', 82 'Set-Cookie', 83 'SourceMap', 84 'Strict-Transport-Security', 85 'Supports-Loading-Mode', 86 'TE', 87 'Timing-Allow-Origin', 88 'Trailer', 89 'Transfer-Encoding', 90 'Upgrade', 91 'Upgrade-Insecure-Requests', 92 'User-Agent', 93 'Vary', 94 'Via', 95 'WWW-Authenticate', 96 'X-Content-Type-Options', 97 'X-DNS-Prefetch-Control', 98 'X-Frame-Options', 99 'X-Permitted-Cross-Domain-Policies', 100 'X-Powered-By', 101 'X-Requested-With', 102 'X-XSS-Protection' 103] 104 105for (let i = 0; i < wellknownHeaderNames.length; ++i) { 106 const key = wellknownHeaderNames[i] 107 const lowerCasedKey = key.toLowerCase() 108 headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] = 109 lowerCasedKey 110} 111 112// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`. 113Object.setPrototypeOf(headerNameLowerCasedRecord, null) 114 115module.exports = { 116 wellknownHeaderNames, 117 headerNameLowerCasedRecord 118} 119