Skip to main content

net_wire/qpack/table/
static.rs

1//! RFC 9204 Appendix A static header table.
2
3use super::QpackHeaderFieldRef;
4
5/// Number of entries in the RFC 9204 Appendix A static table.
6pub const QPACK_STATIC_TABLE_LEN: usize = 99;
7
8/// RFC 9204 Appendix A's immutable, zero-based static header table.
9pub struct QpackStaticTable;
10
11impl QpackStaticTable {
12    /// Returns the number of entries in the static table.
13    pub const fn len() -> usize {
14        QPACK_STATIC_TABLE_LEN
15    }
16
17    /// Returns whether the static table has no entries.
18    pub const fn is_empty() -> bool {
19        false
20    }
21
22    /// Returns the field at a zero-based RFC 9204 Appendix A index.
23    pub fn get(index: usize) -> Option<QpackHeaderFieldRef<'static>> {
24        STATIC_TABLE.get(index).copied()
25    }
26}
27
28const STATIC_TABLE: [QpackHeaderFieldRef<'static>; QPACK_STATIC_TABLE_LEN] = [
29    QpackHeaderFieldRef::new(b":authority", b""),
30    QpackHeaderFieldRef::new(b":path", b"/"),
31    QpackHeaderFieldRef::new(b"age", b"0"),
32    QpackHeaderFieldRef::new(b"content-disposition", b""),
33    QpackHeaderFieldRef::new(b"content-length", b"0"),
34    QpackHeaderFieldRef::new(b"cookie", b""),
35    QpackHeaderFieldRef::new(b"date", b""),
36    QpackHeaderFieldRef::new(b"etag", b""),
37    QpackHeaderFieldRef::new(b"if-modified-since", b""),
38    QpackHeaderFieldRef::new(b"if-none-match", b""),
39    QpackHeaderFieldRef::new(b"last-modified", b""),
40    QpackHeaderFieldRef::new(b"link", b""),
41    QpackHeaderFieldRef::new(b"location", b""),
42    QpackHeaderFieldRef::new(b"referer", b""),
43    QpackHeaderFieldRef::new(b"set-cookie", b""),
44    QpackHeaderFieldRef::new(b":method", b"CONNECT"),
45    QpackHeaderFieldRef::new(b":method", b"DELETE"),
46    QpackHeaderFieldRef::new(b":method", b"GET"),
47    QpackHeaderFieldRef::new(b":method", b"HEAD"),
48    QpackHeaderFieldRef::new(b":method", b"OPTIONS"),
49    QpackHeaderFieldRef::new(b":method", b"POST"),
50    QpackHeaderFieldRef::new(b":method", b"PUT"),
51    QpackHeaderFieldRef::new(b":scheme", b"http"),
52    QpackHeaderFieldRef::new(b":scheme", b"https"),
53    QpackHeaderFieldRef::new(b":status", b"103"),
54    QpackHeaderFieldRef::new(b":status", b"200"),
55    QpackHeaderFieldRef::new(b":status", b"304"),
56    QpackHeaderFieldRef::new(b":status", b"404"),
57    QpackHeaderFieldRef::new(b":status", b"503"),
58    QpackHeaderFieldRef::new(b"accept", b"*/*"),
59    QpackHeaderFieldRef::new(b"accept", b"application/dns-message"),
60    QpackHeaderFieldRef::new(b"accept-encoding", b"gzip, deflate, br"),
61    QpackHeaderFieldRef::new(b"accept-ranges", b"bytes"),
62    QpackHeaderFieldRef::new(b"access-control-allow-headers", b"cache-control"),
63    QpackHeaderFieldRef::new(b"access-control-allow-headers", b"content-type"),
64    QpackHeaderFieldRef::new(b"access-control-allow-origin", b"*"),
65    QpackHeaderFieldRef::new(b"cache-control", b"max-age=0"),
66    QpackHeaderFieldRef::new(b"cache-control", b"max-age=2592000"),
67    QpackHeaderFieldRef::new(b"cache-control", b"max-age=604800"),
68    QpackHeaderFieldRef::new(b"cache-control", b"no-cache"),
69    QpackHeaderFieldRef::new(b"cache-control", b"no-store"),
70    QpackHeaderFieldRef::new(b"cache-control", b"public, max-age=31536000"),
71    QpackHeaderFieldRef::new(b"content-encoding", b"br"),
72    QpackHeaderFieldRef::new(b"content-encoding", b"gzip"),
73    QpackHeaderFieldRef::new(b"content-type", b"application/dns-message"),
74    QpackHeaderFieldRef::new(b"content-type", b"application/javascript"),
75    QpackHeaderFieldRef::new(b"content-type", b"application/json"),
76    QpackHeaderFieldRef::new(b"content-type", b"application/x-www-form-urlencoded"),
77    QpackHeaderFieldRef::new(b"content-type", b"image/gif"),
78    QpackHeaderFieldRef::new(b"content-type", b"image/jpeg"),
79    QpackHeaderFieldRef::new(b"content-type", b"image/png"),
80    QpackHeaderFieldRef::new(b"content-type", b"text/css"),
81    QpackHeaderFieldRef::new(b"content-type", b"text/html; charset=utf-8"),
82    QpackHeaderFieldRef::new(b"content-type", b"text/plain"),
83    QpackHeaderFieldRef::new(b"content-type", b"text/plain;charset=utf-8"),
84    QpackHeaderFieldRef::new(b"range", b"bytes=0-"),
85    QpackHeaderFieldRef::new(b"strict-transport-security", b"max-age=31536000"),
86    QpackHeaderFieldRef::new(
87        b"strict-transport-security",
88        b"max-age=31536000; includesubdomains",
89    ),
90    QpackHeaderFieldRef::new(
91        b"strict-transport-security",
92        b"max-age=31536000; includesubdomains; preload",
93    ),
94    QpackHeaderFieldRef::new(b"vary", b"accept-encoding"),
95    QpackHeaderFieldRef::new(b"vary", b"origin"),
96    QpackHeaderFieldRef::new(b"x-content-type-options", b"nosniff"),
97    QpackHeaderFieldRef::new(b"x-xss-protection", b"1; mode=block"),
98    QpackHeaderFieldRef::new(b":status", b"100"),
99    QpackHeaderFieldRef::new(b":status", b"204"),
100    QpackHeaderFieldRef::new(b":status", b"206"),
101    QpackHeaderFieldRef::new(b":status", b"302"),
102    QpackHeaderFieldRef::new(b":status", b"400"),
103    QpackHeaderFieldRef::new(b":status", b"403"),
104    QpackHeaderFieldRef::new(b":status", b"421"),
105    QpackHeaderFieldRef::new(b":status", b"425"),
106    QpackHeaderFieldRef::new(b":status", b"500"),
107    QpackHeaderFieldRef::new(b"accept-language", b""),
108    QpackHeaderFieldRef::new(b"access-control-allow-credentials", b"FALSE"),
109    QpackHeaderFieldRef::new(b"access-control-allow-credentials", b"TRUE"),
110    QpackHeaderFieldRef::new(b"access-control-allow-headers", b"*"),
111    QpackHeaderFieldRef::new(b"access-control-allow-methods", b"get"),
112    QpackHeaderFieldRef::new(b"access-control-allow-methods", b"get, post, options"),
113    QpackHeaderFieldRef::new(b"access-control-allow-methods", b"options"),
114    QpackHeaderFieldRef::new(b"access-control-expose-headers", b"content-length"),
115    QpackHeaderFieldRef::new(b"access-control-request-headers", b"content-type"),
116    QpackHeaderFieldRef::new(b"access-control-request-method", b"get"),
117    QpackHeaderFieldRef::new(b"access-control-request-method", b"post"),
118    QpackHeaderFieldRef::new(b"alt-svc", b"clear"),
119    QpackHeaderFieldRef::new(b"authorization", b""),
120    QpackHeaderFieldRef::new(
121        b"content-security-policy",
122        b"script-src 'none'; object-src 'none'; base-uri 'none'",
123    ),
124    QpackHeaderFieldRef::new(b"early-data", b"1"),
125    QpackHeaderFieldRef::new(b"expect-ct", b""),
126    QpackHeaderFieldRef::new(b"forwarded", b""),
127    QpackHeaderFieldRef::new(b"if-range", b""),
128    QpackHeaderFieldRef::new(b"origin", b""),
129    QpackHeaderFieldRef::new(b"purpose", b"prefetch"),
130    QpackHeaderFieldRef::new(b"server", b""),
131    QpackHeaderFieldRef::new(b"timing-allow-origin", b"*"),
132    QpackHeaderFieldRef::new(b"upgrade-insecure-requests", b"1"),
133    QpackHeaderFieldRef::new(b"user-agent", b""),
134    QpackHeaderFieldRef::new(b"x-forwarded-for", b""),
135    QpackHeaderFieldRef::new(b"x-frame-options", b"deny"),
136    QpackHeaderFieldRef::new(b"x-frame-options", b"sameorigin"),
137];