Node.js http.validateHeaderValue() 方法
http.validateHeaderValue() (在 v14.3.0 中添加)属性是“ http ”模块的内置属性,它在调用 res.setHeader(name, value)时对提供的值执行低级验证。
传递非法值作为值将导致抛出 TypeError。未定义值错误由代码标识:“ ERR_HTTP_INVALID_HEADER_VALUE ”。无效值字符错误由代码标识:' ERR_INVALID_CHAR '。
在将标头传递给 HTTP 请求或响应之前,不必使用此方法。 HTTP 模块将自动验证此类标头。
注意:使用最新版本的 Node.js 来获取所需的输出。
为了得到响应和正确的结果,我们需要导入' http '模块。
const http = require('http');
句法:
http.validateHeaderValue(name, value);
参数:此方法接受上面提到的两个参数,如下所述:
- name < String > :它接受标题的名称,不区分大小写。
- value < any > :它接受任何函数、数组或字符串。
返回值:它不返回任何值,而是对提供的值执行低级验证。
下面的示例说明了在 Node.js 中使用http.validateHeaderValue()属性。
示例 1:文件名:index.js
Javascript
// Node.js program to demonstrate the
// http.validateHeaderValue() Method
// Importing http module
const http = require('http');
const { validateHeaderValue } = require('http');
// Handling Errors via try-catch
try {
validateHeaderValue('x-my-header', undefined);
} catch (err) {
err instanceof TypeError; // true
// Printing Errors
console.log("Is undefined Invalid:",
err.code === 'ERR_HTTP_INVALID_HEADER_VALUE'); // true
// 'Invalid value "undefined" for header "x-my-header"'
console.log(err.message);
}
// Handling Errors via try-catch
try {
http.validateHeaderValue('x-my-header', 'oʊmɪɡə');
} catch (err) {
err instanceof TypeError; // --> true
// Printing Errors
console.log("Is undefined Invalid:",
err.code === 'ERR_INVALID_CHAR'); // true
// 'Invalid character in header content ["x-my-header"]'
console.log(err.message);
}
Javascript
// Node.js program to demonstrate the
// http.validateHeaderValue() Method
// Importing http module
var http = require('http');
// Another way to import
const { validateHeaderName } = require('http');
// Setting up PORT
const PORT = process.env.PORT || 3000;
// Creating http Server
var httpServer = http.createServer(
function(request, response) {
// Setting up Headers
response.setHeader('Content-Type', 'text/html');
response.setHeader('Set-Cookie',
['type=ninja', 'language=javascript']);
// Handling Errors via try-catch
try {
validateHeaderValue('Content-Type', 'text/html');
} catch (err) {
// false
console.log("Error: ", err instanceof TypeError);
// Printing Errors
console.log(err.message);
}
try {
http.validateHeaderValue('Set-Cookie', ['type=ninja',
'language=javascript']);
} catch (err) {
// false
console.log("Error: ", err instanceof TypeError);
// Printing Errors
console.log(err.message);
}
// Getting the set Headers
const headers = response.getHeaders();
// Printing those headers
console.log(headers);
// Prints Output on the
// browser in response
response.end('ok');
});
// Listening to http Server
httpServer.listen(PORT, ()=>{
console.log("Server is running at port 3000...");
});
使用以下命令运行index.js文件:
node index.js
输出:
Is undefined Invalid: true
Invalid value “undefined” for header “x-my-header”
Is undefined Invalid: true
Invalid character in header content [“x-my-header”]
示例 2:文件名:index.js
Javascript
// Node.js program to demonstrate the
// http.validateHeaderValue() Method
// Importing http module
var http = require('http');
// Another way to import
const { validateHeaderName } = require('http');
// Setting up PORT
const PORT = process.env.PORT || 3000;
// Creating http Server
var httpServer = http.createServer(
function(request, response) {
// Setting up Headers
response.setHeader('Content-Type', 'text/html');
response.setHeader('Set-Cookie',
['type=ninja', 'language=javascript']);
// Handling Errors via try-catch
try {
validateHeaderValue('Content-Type', 'text/html');
} catch (err) {
// false
console.log("Error: ", err instanceof TypeError);
// Printing Errors
console.log(err.message);
}
try {
http.validateHeaderValue('Set-Cookie', ['type=ninja',
'language=javascript']);
} catch (err) {
// false
console.log("Error: ", err instanceof TypeError);
// Printing Errors
console.log(err.message);
}
// Getting the set Headers
const headers = response.getHeaders();
// Printing those headers
console.log(headers);
// Prints Output on the
// browser in response
response.end('ok');
});
// Listening to http Server
httpServer.listen(PORT, ()=>{
console.log("Server is running at port 3000...");
});
使用以下命令运行index.js文件:
node index.js
输出:
Output: In-Console
Server is running at port 3000…
Error: false
Valid header…
[Object: null prototype]{
‘Content-Type’: ‘text/html’,
‘Set-Cookie’: [‘type=ninja’, ‘language=javascript’]}
现在在浏览器中运行http://localhost:3000/ 。
Output: In-Browser
ok
参考: https://nodejs.org/api/http.html#http_http_validateheadervalue_name_value