forked from nodejs/node
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test-http2-invalid-headers.js
32 lines (30 loc) · 1018 Bytes
/
test-http2-invalid-headers.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'use strict';
const common = require('../common');
if (!common.hasCrypto) { common.skip('missing crypto'); }
const h2 = require('http2');
const assert = require('assert');
const server = h2.createServer(common.mustCall((req, res) => {
assert.throws(() => {
res.setHeader('foo⠊Set-Cookie', 'foo=bar');
}, { code: 'ERR_INVALID_HTTP_TOKEN' });
assert.throws(() => {
res.writeHead(200, { 'foo⠊Set-Cookie': 'foo=bar' });
}, { code: 'ERR_INVALID_HTTP_TOKEN' });
assert.throws(() => {
res.setHeader('Set-Cookie', 'foo=barഊഊ<script>alert("Hi!")</script>');
}, { code: 'ERR_INVALID_CHAR' });
assert.throws(() => {
res.writeHead(200, {
'Set-Cookie': 'foo=barഊഊ<script>alert("Hi!")</script>'
});
}, { code: 'ERR_INVALID_CHAR' });
res.end();
}));
server.listen(0, common.mustCall(() => {
const session = h2.connect(`http://localhost:${server.address().port}`);
const req = session.request();
req.on('end', () => {
session.close();
server.close();
});
}));