http2: expand list of known headers · nodejs/node@b9a9290 · GitHub
Skip to content

Commit b9a9290

Browse files
apapirovskijasnell
authored andcommitted
http2: expand list of known headers
Add access-control-*, dnt, forwarded, trailer, tk, upgrade-insecure-requests, warning, x-content-type-options and x-frame-options to known list of headers for HTTP2. Expand tests to account for these headers. Fixes: #15337 Refs: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers Refs: https://www.w3.org/TR/cors/#syntax Refs: https://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#dnt-header-field Refs: https://tools.ietf.org/html/rfc7239#section-4 Refs: https://tools.ietf.org/html/rfc7230#section-4.4 Refs: https://www.w3.org/2011/tracking-protection/drafts/tracking-dnt.html#response-header-field Refs: https://www.w3.org/TR/upgrade-insecure-requests/#preference Refs: https://tools.ietf.org/html/rfc7234#section-5.5 Refs: https://fetch.spec.whatwg.org/#x-content-type-options-header Refs: https://tools.ietf.org/html/rfc7034 PR-URL: #15434 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
1 parent 771c2ac commit b9a9290

4 files changed

Lines changed: 79 additions & 3 deletions

File tree

lib/internal/http2/util.js

Lines changed: 15 additions & 1 deletion

src/node_http2.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,14 @@ using v8::MaybeLocal;
6868
V(ACCEPT_LANGUAGE, "accept-language") \
6969
V(ACCEPT_RANGES, "accept-ranges") \
7070
V(ACCEPT, "accept") \
71+
V(ACCESS_CONTROL_ALLOW_CREDENTIALS, "access-control-allow-credentials") \
72+
V(ACCESS_CONTROL_ALLOW_HEADERS, "access-control-allow-headers") \
73+
V(ACCESS_CONTROL_ALLOW_METHODS, "access-control-allow-methods") \
7174
V(ACCESS_CONTROL_ALLOW_ORIGIN, "access-control-allow-origin") \
75+
V(ACCESS_CONTROL_EXPOSE_HEADERS, "access-control-expose-headers") \
76+
V(ACCESS_CONTROL_MAX_AGE, "access-control-max-age") \
77+
V(ACCESS_CONTROL_REQUEST_HEADERS, "access-control-request-headers") \
78+
V(ACCESS_CONTROL_REQUEST_METHOD, "access-control-request-method") \
7279
V(AGE, "age") \
7380
V(ALLOW, "allow") \
7481
V(AUTHORIZATION, "authorization") \
@@ -84,9 +91,11 @@ using v8::MaybeLocal;
8491
V(CONTENT_TYPE, "content-type") \
8592
V(COOKIE, "cookie") \
8693
V(DATE, "date") \
94+
V(DNT, "dnt") \
8795
V(ETAG, "etag") \
8896
V(EXPECT, "expect") \
8997
V(EXPIRES, "expires") \
98+
V(FORWARDED, "forwarded") \
9099
V(FROM, "from") \
91100
V(HOST, "host") \
92101
V(IF_MATCH, "if-match") \
@@ -108,13 +117,19 @@ using v8::MaybeLocal;
108117
V(SERVER, "server") \
109118
V(SET_COOKIE, "set-cookie") \
110119
V(STRICT_TRANSPORT_SECURITY, "strict-transport-security") \
120+
V(TRAILER, "trailer") \
111121
V(TRANSFER_ENCODING, "transfer-encoding") \
112122
V(TE, "te") \
123+
V(TK, "tk") \
124+
V(UPGRADE_INSECURE_REQUESTS, "upgrade-insecure-requests") \
113125
V(UPGRADE, "upgrade") \
114126
V(USER_AGENT, "user-agent") \
115127
V(VARY, "vary") \
116128
V(VIA, "via") \
129+
V(WARNING, "warning") \
117130
V(WWW_AUTHENTICATE, "www-authenticate") \
131+
V(X_CONTENT_TYPE_OPTIONS, "x-content-type-options") \
132+
V(X_FRAME_OPTIONS, "x-frame-options") \
118133
V(HTTP2_SETTINGS, "http2-settings") \
119134
V(KEEP_ALIVE, "keep-alive") \
120135
V(PROXY_CONNECTION, "proxy-connection")

test/parallel/test-http2-binding.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,14 @@ const expectedHeaderNames = {
105105
HTTP2_HEADER_ACCEPT_LANGUAGE: 'accept-language',
106106
HTTP2_HEADER_ACCEPT_RANGES: 'accept-ranges',
107107
HTTP2_HEADER_ACCEPT: 'accept',
108+
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_CREDENTIALS: 'access-control-allow-credentials', // eslint-disable-line max-len
109+
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_HEADERS: 'access-control-allow-headers',
110+
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_METHODS: 'access-control-allow-methods',
108111
HTTP2_HEADER_ACCESS_CONTROL_ALLOW_ORIGIN: 'access-control-allow-origin',
112+
HTTP2_HEADER_ACCESS_CONTROL_EXPOSE_HEADERS: 'access-control-expose-headers',
113+
HTTP2_HEADER_ACCESS_CONTROL_MAX_AGE: 'access-control-max-age',
114+
HTTP2_HEADER_ACCESS_CONTROL_REQUEST_HEADERS: 'access-control-request-headers',
115+
HTTP2_HEADER_ACCESS_CONTROL_REQUEST_METHOD: 'access-control-request-method',
109116
HTTP2_HEADER_AGE: 'age',
110117
HTTP2_HEADER_ALLOW: 'allow',
111118
HTTP2_HEADER_AUTHORIZATION: 'authorization',
@@ -119,9 +126,11 @@ const expectedHeaderNames = {
119126
HTTP2_HEADER_CONTENT_TYPE: 'content-type',
120127
HTTP2_HEADER_COOKIE: 'cookie',
121128
HTTP2_HEADER_CONNECTION: 'connection',
129+
HTTP2_HEADER_DNT: 'dnt',
122130
HTTP2_HEADER_ETAG: 'etag',
123131
HTTP2_HEADER_EXPECT: 'expect',
124132
HTTP2_HEADER_EXPIRES: 'expires',
133+
HTTP2_HEADER_FORWARDED: 'forwarded',
125134
HTTP2_HEADER_FROM: 'from',
126135
HTTP2_HEADER_HOST: 'host',
127136
HTTP2_HEADER_IF_MATCH: 'if-match',
@@ -144,11 +153,17 @@ const expectedHeaderNames = {
144153
HTTP2_HEADER_SERVER: 'server',
145154
HTTP2_HEADER_SET_COOKIE: 'set-cookie',
146155
HTTP2_HEADER_STRICT_TRANSPORT_SECURITY: 'strict-transport-security',
156+
HTTP2_HEADER_TRAILER: 'trailer',
147157
HTTP2_HEADER_TRANSFER_ENCODING: 'transfer-encoding',
158+
HTTP2_HEADER_TK: 'tk',
159+
HTTP2_HEADER_UPGRADE_INSECURE_REQUESTS: 'upgrade-insecure-requests',
148160
HTTP2_HEADER_USER_AGENT: 'user-agent',
149161
HTTP2_HEADER_VARY: 'vary',
150162
HTTP2_HEADER_VIA: 'via',
163+
HTTP2_HEADER_WARNING: 'warning',
151164
HTTP2_HEADER_WWW_AUTHENTICATE: 'www-authenticate',
165+
HTTP2_HEADER_X_CONTENT_TYPE_OPTIONS: 'x-content-type-options',
166+
HTTP2_HEADER_X_FRAME_OPTIONS: 'x-frame-options',
152167
HTTP2_HEADER_KEEP_ALIVE: 'keep-alive',
153168
HTTP2_HEADER_CONTENT_MD5: 'content-md5',
154169
HTTP2_HEADER_TE: 'te',

test/parallel/test-http2-util-headers-list.js

Lines changed: 34 additions & 2 deletions

0 commit comments

Comments
 (0)