bugfix: 修复 responseReplace.replaceResponseHeaders 方法,在与原响应头相等时,方法返回值不对的问题。
parent
b0f6a9afaf
commit
120279c57f
|
@ -20,18 +20,19 @@ function replaceResponseHeaders (newHeaders, res, proxyRes) {
|
|||
|
||||
// 替换响应头
|
||||
for (let i = 0; i < proxyRes.rawHeaders.length; i += 2) {
|
||||
const headerKey = proxyRes.rawHeaders[i]
|
||||
const headerKeyLower = headerKey.toLowerCase()
|
||||
const headerKey = proxyRes.rawHeaders[i].toLowerCase()
|
||||
|
||||
const newHeaderValue = newHeaders[headerKeyLower]
|
||||
if (newHeaderValue && newHeaderValue !== proxyRes.rawHeaders[i + 1]) {
|
||||
preHeaders[headerKeyLower] = proxyRes.rawHeaders[i + 1] // 先保存原先响应头
|
||||
if (newHeaderValue === REMOVE) { // 由于拦截配置中不允许配置null,会被删,所以配置一个[remove],当作删除响应头的意思
|
||||
proxyRes.rawHeaders[i + 1] = ''
|
||||
} else {
|
||||
proxyRes.rawHeaders[i + 1] = newHeaderValue
|
||||
const newHeaderValue = newHeaders[headerKey]
|
||||
if (newHeaderValue) {
|
||||
if (newHeaderValue !== proxyRes.rawHeaders[i + 1]) {
|
||||
preHeaders[headerKey] = proxyRes.rawHeaders[i + 1] // 先保存原先响应头
|
||||
if (newHeaderValue === REMOVE) { // 由于拦截配置中不允许配置null,会被删,所以配置一个[remove],当作删除响应头的意思
|
||||
proxyRes.rawHeaders[i + 1] = ''
|
||||
} else {
|
||||
proxyRes.rawHeaders[i + 1] = newHeaderValue
|
||||
}
|
||||
}
|
||||
delete newHeaders[headerKeyLower]
|
||||
delete newHeaders[headerKey]
|
||||
}
|
||||
}
|
||||
// 新增响应头
|
||||
|
@ -54,7 +55,7 @@ function replaceResponseHeaders (newHeaders, res, proxyRes) {
|
|||
|
||||
module.exports = {
|
||||
name: 'responseReplace',
|
||||
priority: 201,
|
||||
priority: 203,
|
||||
replaceResponseHeaders,
|
||||
responseIntercept (context, interceptOpt, req, res, proxyReq, proxyRes, ssl, next) {
|
||||
const { rOptions, log } = context
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
const responseReplace = require('../../../../../src/lib/interceptor/impl/res/responseReplace')
|
||||
|
||||
const headers = {}
|
||||
const res = {
|
||||
setHeader: (key, value) => {
|
||||
headers[key] = value
|
||||
}
|
||||
}
|
||||
|
||||
const proxyRes = {
|
||||
rawHeaders: [
|
||||
'Content-Type', 'application/json; charset=utf-8',
|
||||
'Content-Length', '2',
|
||||
'ETag', 'W/"2"',
|
||||
'Date', 'Thu, 01 Jan 1970 00:00:00 GMT',
|
||||
'Connection', 'keep-alive'
|
||||
]
|
||||
}
|
||||
|
||||
const newHeaders = {
|
||||
'Content-Type': 'application/json; charset=utf-8',
|
||||
'Content-Length': '3',
|
||||
xxx: 1,
|
||||
Date: '[remove]',
|
||||
yyy: '[remove]'
|
||||
}
|
||||
|
||||
const result = responseReplace.replaceResponseHeaders(newHeaders, res, proxyRes)
|
||||
console.log(proxyRes.rawHeaders)
|
||||
console.log(headers)
|
||||
console.log(result)
|
Loading…
Reference in New Issue