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

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
G
Google Developers Blog
The GitHub Blog
The GitHub Blog
Jina AI
Jina AI
A
About on SuperTechFans
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
Blog — PlanetScale
Blog — PlanetScale
酷 壳 – CoolShell
酷 壳 – CoolShell
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
B
Blog RSS Feed
大猫的无限游戏
大猫的无限游戏
美团技术团队
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
腾讯CDC
Hugging Face - Blog
Hugging Face - Blog
阮一峰的网络日志
阮一峰的网络日志
H
Help Net Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - 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 或端口变更,代码都不用改。