| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 3ea53c5 commit 5019b54
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2950,6 +2950,48 @@ Sets a single header value. If the header already exists in the to-be-sent | |||
| 2950 | 2950 | headers, its value will be replaced. Use an array of strings to send multiple | |
| 2951 | 2951 | headers with the same name. | |
| 2952 | 2952 | ||
| 2953 | + ### `outgoingMessage.setHeaders(headers)` | ||
| 2954 | + | ||
| 2955 | + <!-- YAML | ||
| 2956 | + added: REPLACEME | ||
| 2957 | + --> | ||
| 2958 | + | ||
| 2959 | + * `headers` {Headers|Map} | ||
| 2960 | + * Returns: {http.ServerResponse} | ||
| 2961 | + | ||
| 2962 | + Returns the response object. | ||
| 2963 | + | ||
| 2964 | + Sets multiple header values for implicit headers. | ||
| 2965 | + `headers` must be an instance of [`Headers`][] or `Map`, | ||
| 2966 | + if a header already exists in the to-be-sent headers, | ||
| 2967 | + its value will be replaced. | ||
| 2968 | + | ||
| 2969 | + ```js | ||
| 2970 | + const headers = new Headers({ foo: 'bar' }); | ||
| 2971 | + response.setHeaders(headers); | ||
| 2972 | + ``` | ||
| 2973 | + | ||
| 2974 | + or | ||
| 2975 | + | ||
| 2976 | + ```js | ||
| 2977 | + const headers = new Map([['foo', 'bar']]); | ||
| 2978 | + res.setHeaders(headers); | ||
| 2979 | + ``` | ||
| 2980 | + | ||
| 2981 | + When headers have been set with [`outgoingMessage.setHeaders()`][], | ||
| 2982 | + they will be merged with any headers passed to [`response.writeHead()`][], | ||
| 2983 | + with the headers passed to [`response.writeHead()`][] given precedence. | ||
| 2984 | + | ||
| 2985 | + ```js | ||
| 2986 | + // Returns content-type = text/plain | ||
| 2987 | + const server = http.createServer((req, res) => { | ||
| 2988 | + const headers = new Headers({ 'Content-Type': 'text/html' }); | ||
| 2989 | + res.setHeaders(headers); | ||
| 2990 | + res.writeHead(200, { 'Content-Type': 'text/plain' }); | ||
| 2991 | + res.end('ok'); | ||
| 2992 | + }); | ||
| 2993 | + ``` | ||
| 2994 | + | ||
| 2953 | 2995 | ### `outgoingMessage.setTimeout(msesc[, callback])` | |
| 2954 | 2996 | ||
| 2955 | 2997 | <!-- YAML | |
@@ -3721,6 +3763,7 @@ Set the maximum number of idle HTTP parsers. | |||
| 3721 | 3763 | [`Buffer.byteLength()`]: buffer.md#static-method-bufferbytelengthstring-encoding | |
| 3722 | 3764 | [`Duplex`]: stream.md#class-streamduplex | |
| 3723 | 3765 | [`HPE_HEADER_OVERFLOW`]: errors.md#hpe_header_overflow | |
| 3766 | + [`Headers`]: globals.md#class-headers | ||
| 3724 | 3767 | [`TypeError`]: errors.md#class-typeerror | |
| 3725 | 3768 | [`URL`]: url.md#the-whatwg-url-api | |
| 3726 | 3769 | [`agent.createConnection()`]: #agentcreateconnectionoptions-callback | |
@@ -3747,6 +3790,7 @@ Set the maximum number of idle HTTP parsers. | |||
| 3747 | 3790 | [`net.createConnection()`]: net.md#netcreateconnectionoptions-connectlistener | |
| 3748 | 3791 | [`new URL()`]: url.md#new-urlinput-base | |
| 3749 | 3792 | [`outgoingMessage.setHeader(name, value)`]: #outgoingmessagesetheadername-value | |
| 3793 | + [`outgoingMessage.setHeaders()`]: #outgoingmessagesetheadersheaders | ||
| 3750 | 3794 | [`outgoingMessage.socket`]: #outgoingmessagesocket | |
| 3751 | 3795 | [`removeHeader(name)`]: #requestremoveheadername | |
| 3752 | 3796 | [`request.destroy()`]: #requestdestroyerror | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -673,6 +673,28 @@ OutgoingMessage.prototype.setHeader = function setHeader(name, value) { | |||
| 673 | 673 | return this; | |
| 674 | 674 | }; | |
| 675 | 675 | ||
| 676 | + OutgoingMessage.prototype.setHeaders = function setHeaders(headers) { | ||
| 677 | + if (this._header) { | ||
| 678 | + throw new ERR_HTTP_HEADERS_SENT('set'); | ||
| 679 | + } | ||
| 680 | + | ||
| 681 | + | ||
| 682 | + if ( | ||
| 683 | + !headers || | ||
| 684 | + ArrayIsArray(headers) || | ||
| 685 | + typeof headers.keys !== 'function' || | ||
| 686 | + typeof headers.get !== 'function' | ||
| 687 | + ) { | ||
| 688 | + throw new ERR_INVALID_ARG_TYPE('headers', ['Headers', 'Map'], headers); | ||
| 689 | + } | ||
| 690 | + | ||
| 691 | + for (const key of headers.keys()) { | ||
| 692 | + this.setHeader(key, headers.get(key)); | ||
| 693 | + } | ||
| 694 | + | ||
| 695 | + return this; | ||
| 696 | + }; | ||
| 697 | + | ||
| 676 | 698 | OutgoingMessage.prototype.appendHeader = function appendHeader(name, value) { | |
| 677 | 699 | if (this._header) { | |
| 678 | 700 | throw new ERR_HTTP_HEADERS_SENT('append'); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,131 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + const common = require('../common'); | ||
| 3 | + const http = require('http'); | ||
| 4 | + const assert = require('assert'); | ||
| 5 | + | ||
| 6 | + { | ||
| 7 | + const server = http.createServer({ requireHostHeader: false }, common.mustCall((req, res) => { | ||
| 8 | + res.writeHead(200); // Headers already sent | ||
| 9 | + const headers = new globalThis.Headers({ foo: '1' }); | ||
| 10 | + assert.throws(() => { | ||
| 11 | + res.setHeaders(headers); | ||
| 12 | + }, { | ||
| 13 | + code: 'ERR_HTTP_HEADERS_SENT' | ||
| 14 | + }); | ||
| 15 | + res.end(); | ||
| 16 | + })); | ||
| 17 | + | ||
| 18 | + server.listen(0, common.mustCall(() => { | ||
| 19 | + http.get({ port: server.address().port }, (res) => { | ||
| 20 | + assert.strictEqual(res.headers.foo, undefined); | ||
| 21 | + res.resume().on('end', common.mustCall(() => { | ||
| 22 | + server.close(); | ||
| 23 | + })); | ||
| 24 | + }); | ||
| 25 | + })); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | + { | ||
| 29 | + const server = http.createServer({ requireHostHeader: false }, common.mustCall((req, res) => { | ||
| 30 | + assert.throws(() => { | ||
| 31 | + res.setHeaders(['foo', '1']); | ||
| 32 | + }, { | ||
| 33 | + code: 'ERR_INVALID_ARG_TYPE' | ||
| 34 | + }); | ||
| 35 | + assert.throws(() => { | ||
| 36 | + res.setHeaders({ foo: '1' }); | ||
| 37 | + }, { | ||
| 38 | + code: 'ERR_INVALID_ARG_TYPE' | ||
| 39 | + }); | ||
| 40 | + assert.throws(() => { | ||
| 41 | + res.setHeaders(null); | ||
| 42 | + }, { | ||
| 43 | + code: 'ERR_INVALID_ARG_TYPE' | ||
| 44 | + }); | ||
| 45 | + assert.throws(() => { | ||
| 46 | + res.setHeaders(undefined); | ||
| 47 | + }, { | ||
| 48 | + code: 'ERR_INVALID_ARG_TYPE' | ||
| 49 | + }); | ||
| 50 | + assert.throws(() => { | ||
| 51 | + res.setHeaders('test'); | ||
| 52 | + }, { | ||
| 53 | + code: 'ERR_INVALID_ARG_TYPE' | ||
| 54 | + }); | ||
| 55 | + assert.throws(() => { | ||
| 56 | + res.setHeaders(1); | ||
| 57 | + }, { | ||
| 58 | + code: 'ERR_INVALID_ARG_TYPE' | ||
| 59 | + }); | ||
| 60 | + res.end(); | ||
| 61 | + })); | ||
| 62 | + | ||
| 63 | + server.listen(0, common.mustCall(() => { | ||
| 64 | + http.get({ port: server.address().port }, (res) => { | ||
| 65 | + assert.strictEqual(res.headers.foo, undefined); | ||
| 66 | + res.resume().on('end', common.mustCall(() => { | ||
| 67 | + server.close(); | ||
| 68 | + })); | ||
| 69 | + }); | ||
| 70 | + })); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + { | ||
| 74 | + const server = http.createServer({ requireHostHeader: false }, common.mustCall((req, res) => { | ||
| 75 | + const headers = new globalThis.Headers({ foo: '1', bar: '2' }); | ||
| 76 | + res.setHeaders(headers); | ||
| 77 | + res.writeHead(200); | ||
| 78 | + res.end(); | ||
| 79 | + })); | ||
| 80 | + | ||
| 81 | + server.listen(0, common.mustCall(() => { | ||
| 82 | + http.get({ port: server.address().port }, (res) => { | ||
| 83 | + assert.strictEqual(res.statusCode, 200); | ||
| 84 | + assert.strictEqual(res.headers.foo, '1'); | ||
| 85 | + assert.strictEqual(res.headers.bar, '2'); | ||
| 86 | + res.resume().on('end', common.mustCall(() => { | ||
| 87 | + server.close(); | ||
| 88 | + })); | ||
| 89 | + }); | ||
| 90 | + })); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + { | ||
| 94 | + const server = http.createServer({ requireHostHeader: false }, common.mustCall((req, res) => { | ||
| 95 | + const headers = new globalThis.Headers({ foo: '1', bar: '2' }); | ||
| 96 | + res.setHeaders(headers); | ||
| 97 | + res.writeHead(200, ['foo', '3']); | ||
| 98 | + res.end(); | ||
| 99 | + })); | ||
| 100 | + | ||
| 101 | + server.listen(0, common.mustCall(() => { | ||
| 102 | + http.get({ port: server.address().port }, (res) => { | ||
| 103 | + assert.strictEqual(res.statusCode, 200); | ||
| 104 | + assert.strictEqual(res.headers.foo, '3'); // Override by writeHead | ||
| 105 | + assert.strictEqual(res.headers.bar, '2'); | ||
| 106 | + res.resume().on('end', common.mustCall(() => { | ||
| 107 | + server.close(); | ||
| 108 | + })); | ||
| 109 | + }); | ||
| 110 | + })); | ||
| 111 | + } | ||
| 112 | + | ||
| 113 | + { | ||
| 114 | + const server = http.createServer({ requireHostHeader: false }, common.mustCall((req, res) => { | ||
| 115 | + const headers = new Map([['foo', '1'], ['bar', '2']]); | ||
| 116 | + res.setHeaders(headers); | ||
| 117 | + res.writeHead(200); | ||
| 118 | + res.end(); | ||
| 119 | + })); | ||
| 120 | + | ||
| 121 | + server.listen(0, common.mustCall(() => { | ||
| 122 | + http.get({ port: server.address().port }, (res) => { | ||
| 123 | + assert.strictEqual(res.statusCode, 200); | ||
| 124 | + assert.strictEqual(res.headers.foo, '1'); | ||
| 125 | + assert.strictEqual(res.headers.bar, '2'); | ||
| 126 | + res.resume().on('end', common.mustCall(() => { | ||
| 127 | + server.close(); | ||
| 128 | + })); | ||
| 129 | + }); | ||
| 130 | + })); | ||
| 131 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments