Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
bit-pm
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
燕伟桐
bit-pm
Commits
03c200b9
Unverified
提交
03c200b9
authored
7月 31, 2025
作者:
Will Chen
提交者:
GitHub
7月 31, 2025
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix proxy server: remove URL param so it doesn't interfere with Next.js (#753)
Fixes #748
上级
e5e1495c
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
7 行增加
和
50 行删除
+7
-50
start_proxy_server.ts
src/ipc/utils/start_proxy_server.ts
+0
-5
proxy_server.js
worker/proxy_server.js
+7
-45
没有找到文件。
src/ipc/utils/start_proxy_server.ts
浏览文件 @
03c200b9
...
@@ -29,11 +29,6 @@ export async function startProxy(
...
@@ -29,11 +29,6 @@ export async function startProxy(
const
worker
=
new
Worker
(
const
worker
=
new
Worker
(
path
.
resolve
(
__dirname
,
".."
,
".."
,
"worker"
,
"proxy_server.js"
),
path
.
resolve
(
__dirname
,
".."
,
".."
,
"worker"
,
"proxy_server.js"
),
{
{
env
:
{
...
process
.
env
,
// inherit parent env
TARGET_URL
:
targetOrigin
,
},
workerData
:
{
workerData
:
{
targetOrigin
,
targetOrigin
,
port
,
port
,
...
...
worker/proxy_server.js
浏览文件 @
03c200b9
...
@@ -2,12 +2,7 @@
...
@@ -2,12 +2,7 @@
* proxy.js – zero-dependency worker-based HTTP/WS forwarder
* proxy.js – zero-dependency worker-based HTTP/WS forwarder
*/
*/
const
{
const
{
parentPort
,
workerData
}
=
require
(
"worker_threads"
);
Worker
,
isMainThread
,
parentPort
,
workerData
,
}
=
require
(
"worker_threads"
);
const
http
=
require
(
"http"
);
const
http
=
require
(
"http"
);
const
https
=
require
(
"https"
);
const
https
=
require
(
"https"
);
...
@@ -16,33 +11,14 @@ const { URL } = require("url");
...
@@ -16,33 +11,14 @@ const { URL } = require("url");
const
fs
=
require
(
"fs"
);
const
fs
=
require
(
"fs"
);
const
path
=
require
(
"path"
);
const
path
=
require
(
"path"
);
/* ─────────────────── configuration (main thread only) ─────────────────── */
const
LISTEN_HOST
=
"localhost"
;
if
(
isMainThread
)
{
// Stand-alone mode: fork the worker and pass through the env as-is
const
w
=
new
Worker
(
__filename
,
{
workerData
:
{
targetOrigin
:
process
.
env
.
TARGET_URL
,
// may be undefined
},
});
w
.
on
(
"message"
,
(
m
)
=>
console
.
log
(
"[proxy-worker]"
,
m
));
w
.
on
(
"error"
,
(
e
)
=>
console
.
error
(
"[proxy-worker] error:"
,
e
));
w
.
on
(
"exit"
,
(
c
)
=>
console
.
log
(
"[proxy-worker] exited"
,
c
));
console
.
log
(
"proxy worker launching …"
);
return
;
// do not execute the rest of the file in the main thread
}
/* ──────────────────────────── worker code ─────────────────────────────── */
/* ──────────────────────────── worker code ─────────────────────────────── */
const
LISTEN_HOST
=
"localhost"
;
const
LISTEN_PORT
=
process
.
env
.
LISTEN_PORT
||
workerData
.
port
;
const
LISTEN_PORT
=
workerData
.
port
;
let
rememberedOrigin
=
null
;
// e.g. "http://localhost:5173"
let
rememberedOrigin
=
null
;
// e.g. "http://localhost:5173"
/* ---------- pre-configure rememberedOrigin from
env or
workerData ------- */
/* ---------- pre-configure rememberedOrigin from workerData ------- */
{
{
const
fixed
=
process
.
env
.
TARGET_URL
||
workerData
?.
targetOrigin
;
const
fixed
=
workerData
?.
targetOrigin
;
if
(
fixed
)
{
if
(
fixed
)
{
try
{
try
{
rememberedOrigin
=
new
URL
(
fixed
).
origin
;
rememberedOrigin
=
new
URL
(
fixed
).
origin
;
...
@@ -51,7 +27,7 @@ let rememberedOrigin = null; // e.g. "http://localhost:5173"
...
@@ -51,7 +27,7 @@ let rememberedOrigin = null; // e.g. "http://localhost:5173"
);
);
}
catch
{
}
catch
{
throw
new
Error
(
throw
new
Error
(
`Invalid
TARGET_URL
"
${
fixed
}
". Must be absolute http/https URL.`
,
`Invalid
target origin
"
${
fixed
}
". Must be absolute http/https URL.`
,
);
);
}
}
}
}
...
@@ -162,21 +138,7 @@ function injectHTML(buf) {
...
@@ -162,21 +138,7 @@ function injectHTML(buf) {
/* ---------------- helper: build upstream URL from request -------------- */
/* ---------------- helper: build upstream URL from request -------------- */
function
buildTargetURL
(
clientReq
)
{
function
buildTargetURL
(
clientReq
)
{
// Support the old "?url=" mechanism
if
(
!
rememberedOrigin
)
throw
new
Error
(
"No upstream configured."
);
const
parsedLocal
=
new
URL
(
clientReq
.
url
,
`http://
${
LISTEN_HOST
}
`
);
const
urlParam
=
parsedLocal
.
searchParams
.
get
(
"url"
);
if
(
urlParam
)
{
const
abs
=
new
URL
(
urlParam
);
if
(
!
/^https
?
:$/
.
test
(
abs
.
protocol
))
throw
new
Error
(
"only http/https targets allowed"
);
rememberedOrigin
=
abs
.
origin
;
// remember for later
return
abs
;
}
if
(
!
rememberedOrigin
)
throw
new
Error
(
"No upstream configured. Use ?url=… once or set TARGET_URL env var."
,
);
// Forward to the remembered origin keeping path & query
// Forward to the remembered origin keeping path & query
return
new
URL
(
clientReq
.
url
,
rememberedOrigin
);
return
new
URL
(
clientReq
.
url
,
rememberedOrigin
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论