1'use strict';
2const common = require('../common');
3const http = require('http');
4const assert = require('assert');
5
6const nonUtf8Header = 'bår';
7const nonUtf8ToLatin1 = Buffer.from(nonUtf8Header).toString('latin1');
8
9{
10  const server = http.createServer(common.mustCall((req, res) => {
11    res.writeHead(200, [
12      'content-disposition',
13      Buffer.from(nonUtf8Header).toString('binary'),
14    ]);
15    res.end('hello');
16  }));
17
18  server.listen(0, common.mustCall(() => {
19    http.get({ port: server.address().port }, (res) => {
20      assert.strictEqual(res.statusCode, 200);
21      assert.strictEqual(res.headers['content-disposition'], nonUtf8ToLatin1);
22      res.resume().on('end', common.mustCall(() => {
23        server.close();
24      }));
25    });
26  }));
27}
28
29{
30  const server = http.createServer(common.mustCall((req, res) => {
31    res.writeHead(200, [
32      'Content-Length', '5',
33      'content-disposition',
34      Buffer.from(nonUtf8Header).toString('binary'),
35    ]);
36    res.end('hello');
37  }));
38
39  server.listen(0, common.mustCall(() => {
40    http.get({ port: server.address().port }, (res) => {
41      assert.strictEqual(res.statusCode, 200);
42      assert.strictEqual(res.headers['content-disposition'], nonUtf8ToLatin1);
43      res.resume().on('end', common.mustCall(() => {
44        server.close();
45      }));
46    });
47  }));
48}
49