Javascript 从Axios错误响应中删除授权标头值
我使用Axios发送HTTP请求,这会导致错误。 当我打印错误对象时,它会打印包含授权头中的机密的请求 例如 这将在日志消息中的几个位置打印机密:Javascript 从Axios错误响应中删除授权标头值,javascript,axios,Javascript,Axios,我使用Axios发送HTTP请求,这会导致错误。 当我打印错误对象时,它会打印包含授权头中的机密的请求 例如 这将在日志消息中的几个位置打印机密: Error: Request failed with status code 463 at createError (/code/node_modules/axios/lib/core/createError.js:16:15) at settle (/code/node_modules/axios/lib/core/settle.j
Error: Request failed with status code 463
at createError (/code/node_modules/axios/lib/core/createError.js:16:15)
at settle (/code/node_modules/axios/lib/core/settle.js:17:12)
at IncomingMessage.handleStreamEnd (/code/node_modules/axios/lib/adapters/http.js:236:11)
at IncomingMessage.emit (events.js:215:7)
at IncomingMessage.EventEmitter.emit (domain.js:475:20)
at endReadableNT (_stream_readable.js:1184:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
config: {
...
url: 'https://test.com/404',
method: 'get',
headers: {
Accept: 'application/json, text/plain, */*',
Authorization: 'secret',
'User-Agent': 'axios/0.19.2'
},
},
...
request: ClientRequest {
_header: 'GET /404 HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Authorization: secret\r\n' +
'User-Agent: axios/0.19.2\r\n' +
'Host: www.test.com\r\n' +
'Connection: close\r\n' +
'\r\n',
},
...
response: {
...
request: ClientRequest {
_header: 'GET /404 HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Authorization: secret\r\n' +
'User-Agent: axios/0.19.2\r\n' +
'Host: www.test.com\r\n' +
'Connection: close\r\n' +
'\r\n',
},
},
}
我不想在日志消息中打印我的秘密。
有没有办法避免它呢?这并不奇怪,但是为什么不在输出消息之前在消息上运行正则表达式呢
const ReRemoveSecret = new RegExp('secret', 'g');
.catch(msg => {
console.log(msg.replace($ReRemoveSecret, ''));
});
我最终使用了
axios.interceptors.response.use({.identity,(error)=>{
删除error.config.headers.Authorization;
删除错误。请求。\u头;
返回承诺。拒绝(错误);
});
这与axios的内部对象结合在一起,因此它很脆弱,可能会断裂,但它现在解决了我的问题。这只是一个象征。您没有公开客户端尚未访问的任何内容。在我的情况下,这是一个基本的身份验证头,其中包括一个base64编码的密码。我不想将密码打印到日志中,因为用户和不应该访问明文密码的进程都可以访问日志。用户可以随时查看reqest标题并看到相同的内容。您指的是哪个“用户”?发送请求的人。
const ReRemoveSecret = new RegExp('secret', 'g');
.catch(msg => {
console.log(msg.replace($ReRemoveSecret, ''));
});