bugfix: 修复 OPTIONS.js 在 OPTIONS 请求伪造成功后,实际请求却不含跨域响应头 `Access-Control-Allow-Origin`,导致跨域请求失败的问题。
parent
120279c57f
commit
667cd25265
|
@ -0,0 +1,27 @@
|
||||||
|
const responseReplaceApi = require('./responseReplace')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'OPTIONSHeaders',
|
||||||
|
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-Origin': rOptions.headers.origin
|
||||||
|
}
|
||||||
|
|
||||||
|
// 替换响应头
|
||||||
|
responseReplaceApi.replaceResponseHeaders(headers, res, proxyRes)
|
||||||
|
|
||||||
|
res.setHeader('DS-AfterOPTIONSHeaders-Interceptor', true)
|
||||||
|
log.info('AfterOPTIONSHeaders intercept:', JSON.stringify(headers))
|
||||||
|
},
|
||||||
|
is (interceptOpt) {
|
||||||
|
return !!interceptOpt.options
|
||||||
|
}
|
||||||
|
}
|
|
@ -19,7 +19,7 @@ function getScriptByUrlOrPath (scriptUrlOrPath) {
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: 'script',
|
name: 'script',
|
||||||
priority: 203,
|
priority: 211,
|
||||||
responseIntercept (context, interceptOpt, req, res, proxyReq, proxyRes, ssl, next) {
|
responseIntercept (context, interceptOpt, req, res, proxyReq, proxyRes, ssl, next) {
|
||||||
const { rOptions, log, setting } = context
|
const { rOptions, log, setting } = context
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,10 @@ const proxy = require('./impl/req/proxy')
|
||||||
const sni = require('./impl/req/sni')
|
const sni = require('./impl/req/sni')
|
||||||
|
|
||||||
// response interceptor impls
|
// response interceptor impls
|
||||||
const responseReplace = require('./impl/res/responseReplace')
|
const OPTIONSHeaders = require('./impl/res/AfterOPTIONSHeaders')
|
||||||
const cacheRes = require('./impl/res/cacheRes')
|
const cacheRes = require('./impl/res/cacheRes')
|
||||||
|
const responseReplace = require('./impl/res/responseReplace')
|
||||||
|
|
||||||
const script = require('./impl/res/script')
|
const script = require('./impl/res/script')
|
||||||
|
|
||||||
module.exports = [
|
module.exports = [
|
||||||
|
@ -24,5 +26,6 @@ module.exports = [
|
||||||
proxy, sni,
|
proxy, sni,
|
||||||
|
|
||||||
// response interceptor impls
|
// response interceptor impls
|
||||||
responseReplace, cacheRes, script
|
OPTIONSHeaders, cacheRes, responseReplace,
|
||||||
|
script
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue