response.setHeader(name, value)
为隐式标头设置单个标头值。
如果该标头已经存在于待发送的标头中,则其值将被替换。
在此处使用字符串数组发送具有相同名称的多个标头。
非字符串值将不加修改地存储。
因此,response.getHeader()
可能返回非字符串值。
但是,非字符串值将转换为字符串以进行网络传输。
response.setHeader('Content-Type', 'text/html');
或者
response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);
尝试设置包含无效字符的标头字段名称或值将导致抛出 TypeError
。
当标头已使用 response.setHeader()
设置时,则它们将与任何传给 response.writeHead()
的标头合并,其中传给 response.writeHead()
的标头优先。
// 返回 content-type = text/plain
const server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html');
res.setHeader('X-Foo', 'bar');
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('ok');
});
如果调用了 response.writeHead()
方法而该方法没有被调用,则会直接将提供的标头值写入网络通道,而不进行内部缓存,标头的 response.getHeader()
不会产生预期的结果。
如果希望在将来可能进行检索和修改时逐步填充标头,则使用 response.setHeader()
而不是 response.writeHead()
。
Sets a single header value for implicit headers. If this header already exists
in the to-be-sent headers, its value will be replaced. Use an array of strings
here to send multiple headers with the same name. Non-string values will be
stored without modification. Therefore, response.getHeader()
may return
non-string values. However, the non-string values will be converted to strings
for network transmission.
response.setHeader('Content-Type', 'text/html');
or
response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);
Attempting to set a header field name or value that contains invalid characters
will result in a TypeError
being thrown.
When headers have been set with response.setHeader()
, they will be merged
with any headers passed to response.writeHead()
, with the headers passed
to response.writeHead()
given precedence.
// Returns content-type = text/plain
const server = http.createServer((req, res) => {
res.setHeader('Content-Type', 'text/html');
res.setHeader('X-Foo', 'bar');
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('ok');
});
If response.writeHead()
method is called and this method has not been
called, it will directly write the supplied header values onto the network
channel without caching internally, and the response.getHeader()
on the
header will not yield the expected result. If progressive population of headers
is desired with potential future retrieval and modification, use
response.setHeader()
instead of response.writeHead()
.