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