惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
I
InfoQ
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
小众软件
小众软件
有赞技术团队
有赞技术团队
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
B
Blog RSS Feed
博客园_首页
Y
Y Combinator Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
M
MIT News - Artificial intelligence
雷峰网
雷峰网
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
H
Help Net Security
P
Proofpoint News Feed
B
Blog
云风的 BLOG
云风的 BLOG
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报

博客园 - USEGEAR

学习unigui【48】lucksheet表格的显示object 学习使用 处理Python对象和列表【5】 学习使用:创建 Python 可调用的 Delphi 函数【4】 学习使用TPythonDelphiVar组件 数据交换Delphi与Python传值【3】 学习使用 数据交换 Delphi 与 Python 传值【2】 学习使用 Python4Delphi 是什么【1】 学习unigui【47】扫码安装apk 学习unigui【46】让客户端浏览器可以选下载你的apk 学习unigui【45】UnimDatePicker等按钮汉化崩溃 学习unigui【44】如何和uinHTMLFrame打交道 学习unigui【43】如何和控件打交道 学习unigui【42】UnimDatePicker的使用 学习unigui【41】htmlframe的交互现象 学习unigui【40】加入监控墙-1 头大的内存泄漏 学习unigui【39】单独文件在ms win server 上执行的坑 学习unigui【38】重新认识UUNIGUI--为什么这样快? 站在“架构与性能”层面重新审视 学习unigui【36】把数据导航放在Unidbgrid脚中 学习unigui【35】dbgrid字段宽度自适应 KingSADA的工业历史数据库的访问
学习unigui【37】nginx的反向代理 ,程序中的重新定向
USEGEAR · 2025-10-07 · via 博客园 - USEGEAR

默认port:9077

希望IP:81后访问9077。于是就采用nginx。
问题当点击下载文件或浏览文件等时,怎么知道用户是通过81口访问的?

UniGUI 没有暴露 RequestHeader(s),继续走“读头部”的路只会踩坑。最稳妥的做法是:别拼绝对 URL,直接用“根相对路径”,让浏览器自己用当前的 scheme + host + port(也就是 Nginx 对外的 81 或 443)去打开,这样完全不依赖服务端获取端口。

pathfile := ExtractFileName(pathfile);

// 根相对路径(前面带 /),浏览器会自动用当前 origin(含端口) 访问
aUrl := '/' + UniFrmBase_knowledge_mgmt.officialDOC + '/' + HTTPEncode(pathfile);

// 更稳妥的 JS 拼接:用 QuotedStr 避免引号问题
UniSession.AddJS('window.open(' + QuotedStr(aUrl) + ');');

若你的应用发布在二级路径(例如 /app/

那就把前缀也加上:

const AppPrefix = '/app'; // 按你的 Nginx 反代前缀填写,若无就留空或删掉
aUrl := AppPrefix + '/' + UniFrmBase_knowledge_mgmt.officialDOC + '/' + HTTPEncode(pathfile);
UniSession.AddJS('window.open(' + QuotedStr(aUrl) + ');');
Nginx 侧的配合(提醒)

确保 Nginx 对 /aDir/(或你实际的 officialDOC 路径)有 location/反代/别名映射到后端能读文件的位置。例如:

location /aDir/ {
    proxy_pass http://127.0.0.1:9077/aDir/;  # 或者 root/alias 到静态目录
    # 其他头按你现有配置即可
}

为什么这招更稳

  • 不依赖 UniGUI 版本差异(根本不读取任何请求头 API)。

  • 自动跟随浏览器的 origin(含端口 81 / 443 / 自定义端口),天然适配反向代理。

  • 你以后换成 HTTPS 或端口变更,代码都不用改。