optimize: 优化 `responseReplace` 拦截器,允许替换多个同名响应头
parent
a66af327c1
commit
f7e5d58af1
|
@ -20,6 +20,7 @@ function replaceResponseHeaders (newHeaders, res, proxyRes) {
|
||||||
const preHeaders = {}
|
const preHeaders = {}
|
||||||
|
|
||||||
// 替换响应头
|
// 替换响应头
|
||||||
|
const needDeleteKeys = []
|
||||||
for (let i = 0; i < proxyRes.rawHeaders.length; i += 2) {
|
for (let i = 0; i < proxyRes.rawHeaders.length; i += 2) {
|
||||||
const headerKey = proxyRes.rawHeaders[i].toLowerCase()
|
const headerKey = proxyRes.rawHeaders[i].toLowerCase()
|
||||||
|
|
||||||
|
@ -27,15 +28,19 @@ function replaceResponseHeaders (newHeaders, res, proxyRes) {
|
||||||
if (newHeaderValue) {
|
if (newHeaderValue) {
|
||||||
if (newHeaderValue !== proxyRes.rawHeaders[i + 1]) {
|
if (newHeaderValue !== proxyRes.rawHeaders[i + 1]) {
|
||||||
preHeaders[headerKey] = proxyRes.rawHeaders[i + 1] // 先保存原先响应头
|
preHeaders[headerKey] = proxyRes.rawHeaders[i + 1] // 先保存原先响应头
|
||||||
if (newHeaderValue === REMOVE) { // 由于拦截配置中不允许配置null,会被删,所以配置一个[remove],当作删除响应头的意思
|
if (newHeaderValue === REMOVE) { // 由于拦截配置中不允许配置null,会被删,所以配置一个 "[remove]",当作删除响应头的意思
|
||||||
proxyRes.rawHeaders[i + 1] = ''
|
proxyRes.rawHeaders[i + 1] = ''
|
||||||
} else {
|
} else {
|
||||||
proxyRes.rawHeaders[i + 1] = newHeaderValue
|
proxyRes.rawHeaders[i + 1] = newHeaderValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
delete newHeaders[headerKey]
|
needDeleteKeys.push(headerKey)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 处理删除响应头
|
||||||
|
for (const headerKey of needDeleteKeys) {
|
||||||
|
delete newHeaders[headerKey]
|
||||||
|
}
|
||||||
// 新增响应头
|
// 新增响应头
|
||||||
for (const headerKey in newHeaders) {
|
for (const headerKey in newHeaders) {
|
||||||
const headerValue = newHeaders[headerKey]
|
const headerValue = newHeaders[headerKey]
|
||||||
|
|
Loading…
Reference in New Issue