32 lines
1.0 KiB
JavaScript
32 lines
1.0 KiB
JavaScript
const responseReplaceApi = require('./responseReplace')
|
||
|
||
module.exports = {
|
||
name: 'AfterOPTIONSHeaders',
|
||
desc: '开启了options.js功能时,正常请求时,会需要增加响应头 `Access-Control-Allow-Origin: xxx`',
|
||
priority: 201,
|
||
responseIntercept (context, interceptOpt, req, res, proxyReq, proxyRes, ssl, next) {
|
||
const { rOptions, log } = context
|
||
|
||
if (rOptions.method === 'OPTIONS') {
|
||
return
|
||
}
|
||
|
||
const headers = {
|
||
'Access-Control-Allow-Credentials': 'true',
|
||
'Access-Control-Allow-Origin': '*',
|
||
'Cross-Origin-Resource-Policy': interceptOpt.optionsCrossPolicy || 'cross-origin',
|
||
}
|
||
|
||
// 替换响应头
|
||
if (responseReplaceApi.replaceResponseHeaders({ ...headers }, res, proxyRes)) {
|
||
log.info('AfterOPTIONSHeaders intercept:', JSON.stringify(headers))
|
||
res.setHeader('DS-AfterOPTIONSHeaders-Interceptor', '1')
|
||
} else {
|
||
res.setHeader('DS-AfterOPTIONSHeaders-Interceptor', '0')
|
||
}
|
||
},
|
||
is (interceptOpt) {
|
||
return !!interceptOpt.options
|
||
},
|
||
}
|