From b582ac63adb01ae1886d1ad289f772b0f862f00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Fri, 9 May 2025 17:06:25 +0800 Subject: [PATCH] =?UTF-8?q?bugfix:=20=E8=A7=A3=E5=86=B3success=E3=80=81abo?= =?UTF-8?q?rt=E3=80=81redirect=E6=8B=A6=E6=88=AA=E5=99=A8=E8=B7=A8?= =?UTF-8?q?=E5=9F=9F=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mitmproxy/src/lib/interceptor/impl/req/abort.js | 12 ++++++++++-- .../src/lib/interceptor/impl/req/redirect.js | 12 ++++++++++-- .../src/lib/interceptor/impl/req/success.js | 12 ++++++++++-- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/abort.js b/packages/mitmproxy/src/lib/interceptor/impl/req/abort.js index 73eb827..68c455b 100644 --- a/packages/mitmproxy/src/lib/interceptor/impl/req/abort.js +++ b/packages/mitmproxy/src/lib/interceptor/impl/req/abort.js @@ -5,10 +5,18 @@ module.exports = { const { rOptions, log } = context if (interceptOpt.abort === true || interceptOpt.abort === 'true') { - res.writeHead(403, { + const headers = { 'Content-Type': 'text/plain; charset=utf-8', 'DS-Interceptor': 'abort', - }) + } + + // headers.Access-Control-Allow-*:避免跨域问题 + if (rOptions.headers.origin) { + headers['Access-Control-Allow-Credentials'] = 'true' + headers['Access-Control-Allow-Origin'] = rOptions.headers.origin + } + + res.writeHead(403, headers) res.write( 'DevSidecar 403: Request abort.\n\n' + ' This request is matched by abort intercept.\n\n' diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/redirect.js b/packages/mitmproxy/src/lib/interceptor/impl/req/redirect.js index 1812abd..5a800cc 100644 --- a/packages/mitmproxy/src/lib/interceptor/impl/req/redirect.js +++ b/packages/mitmproxy/src/lib/interceptor/impl/req/redirect.js @@ -9,10 +9,18 @@ module.exports = { // 获取重定向目标地址 const redirect = proxyApi.buildTargetUrl(rOptions, interceptOpt.redirect, interceptOpt, matched) - res.writeHead(302, { + const headers = { 'Location': redirect, 'DS-Interceptor': 'redirect', - }) + } + + // headers.Access-Control-Allow-*:避免跨域问题 + if (rOptions.headers.origin) { + headers['Access-Control-Allow-Credentials'] = 'true' + headers['Access-Control-Allow-Origin'] = rOptions.headers.origin + } + + res.writeHead(302, headers) res.end() const url = `${rOptions.method} ➜ ${rOptions.protocol}//${rOptions.hostname}:${rOptions.port}${req.url}` diff --git a/packages/mitmproxy/src/lib/interceptor/impl/req/success.js b/packages/mitmproxy/src/lib/interceptor/impl/req/success.js index 179f745..84cff4a 100644 --- a/packages/mitmproxy/src/lib/interceptor/impl/req/success.js +++ b/packages/mitmproxy/src/lib/interceptor/impl/req/success.js @@ -5,10 +5,18 @@ module.exports = { const { rOptions, log } = context if (interceptOpt.success === true || interceptOpt.success === 'true') { - res.writeHead(200, { + const headers = { 'Content-Type': 'text/plain; charset=utf-8', 'DS-Interceptor': 'success', - }) + } + + // headers.Access-Control-Allow-*:避免跨域问题 + if (rOptions.headers.origin) { + headers['Access-Control-Allow-Credentials'] = 'true' + headers['Access-Control-Allow-Origin'] = rOptions.headers.origin + } + + res.writeHead(200, headers) res.write( 'DevSidecar 200: Request success.\n\n' + ' This request is matched by success intercept.\n\n'