如何正确使用encodeURIComponent处理请求Header编码?
请求Header编码错误导致接口访问失败
工作中需要使用encodeURIComponent处理请求Header,但编码结构不正确,导致接口访问失败。我编写了处理函数但未生效,以下是相关代码:
const BASE_URL = ""; function encodeHeaders(headers) { let encodedHeaders = ""; for (const key in headers) { encodedHeaders += encodeURIComponent(key + ": " + headers[key]) + "%0A"; } return encodedHeaders; } const headers = { Connection: "close", "Content-Type": "application/json", "X-EES-AUTH-CLIENT-ID": "o75j23m4c2m3e411sb7z", "X-EES-AUTH-HASH": "e782225331d2839774aac84eab2762a9c8059cfc7433af8f178138ab426fbfbf", accept: "application/json" }; const requestData = { code: "ee", branch: "119", till: "7", serial: "912347", url: "https://resources.sandbox", method: "GET", header: encodeHeaders(headers) }; /** * 实际业务中的调用示例 */ function getTestService() { return axios .post(BASE_URL, requestData, { headers: { "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8" } }) .then((response) => { return response.data; }); }
实际输出与期望输出对比
实际输出(编码前后)
header: Connection%3A%20close%0AContent-Type%3A%20application%2Fjson%0AX-EES-AUTH-CLIENT-ID%3A%20o75j23m4c2m3e411sb7z%0AX-EES-AUTH-HASH%3A%20e782225331d2839774aac84eab2762a9c8059cfc7433af8f178138ab426fbfbf%0Aaccept%3A%20application%2Fjson%0A Connection%253A%2520close%250AContent-Type%253A%2520application%252Fjson%250AX-EES-AUTH-CLIENT-ID%253A%2520o75j23m4c2m3e411sb7z%250AX-EES-AUTH-HASH%253A%2520e782225331d2839774aac84eab2762a9c8059cfc7433af8f178138ab426fbfbf%250Aaccept%253A%2520application%252Fjson%250A
期望输出(编码前后)
header: Connection: close Content-Type: application/json X-EES-AUTH-CLIENT-ID: o75j23m4c2m3e411sb7z X-EES-AUTH-HASH: e782225331d2839774aac84eab2762a9c8059cfc7433af8f178138ab426fbfbf accept: application/json Connection%3A+close%0AContent-Type%3A+application%2Fjson%0AX-EES-AUTH-CLIENT-ID%3A+o75j23m4c2m3e411sb7z%0AX-EES-AUTH-HASH%3A+e782225331d2839774aac84eab2762a9c8059cfc7433af8f178138ab426fbfbf%0Aaccept%3A+application%2Fjson
编码前后的Header结构存在明显差异,请求帮忙排查问题。
内容的提问来源于stack exchange,提问作者Katyellen
相关产品推荐
相关产品推荐

