跨源取数据要靠自建代理

**本地不同端口 = 不同源。A 端口的看板要读 B 端口服务的数据,浏览器同源政策会拦下,除非对方显式放行。此时"UI 做不出来"的真相是"数据拿不到",解法是在自己这边加一层代理,而不是改前端。**

一、症状与误判

自己写一个看板(8777)去读官方服务(3010)的数据,页面能连上服务器但拿不到数据,显示的内容要么是假的、要么只来自极少数放行的接口。

容易被当成"前端写得不好 / UI 不够好看",实际是同源政策在拦:隔壁楼的人来拿东西,除非对方明确欢迎,一律拦下。实测该服务只对"模型列表"这一个接口放行,其他全部默认拒绝。

判断动作:先逐个接口试哪些能读通。如果只有个别接口通,问题不在前端代码。

二、解法:加一层同源代理

你的看板  →  你自己的代理  →  官方服务
(同源,放行)   (服务器间调用,无同源限制)

看板不直接请求官方服务,而是请求同源的本地代理,由代理在服务端去取官方数据再回传。服务端之间互相调用不受同源政策约束。

落地通常是三件事:写一个小代理脚本(几十行,用系统自带 Python 即可)、把启动脚本从静态文件服务器换成这个代理、然后前端再谈样式与图表。

三、连带的产品权衡

走代理之后,原本每次都要手动输入的 API Key 可以存在代理侧,打开看板就有数据。代价是密钥落在本地文件里 —— 这是「免密便利」与「手动输入更保险」之间的选择,属于需要用户本人拍板的安全取舍,不能替他默认。

相关