连接方式
请求由浏览器直连接口,还是经本站代理或你自己部署的 Worker 转发,由“连接方式”决定。默认经本站代理转发;“自动”先检查接口是否允许网页直接访问,不允许时改经本站代理。
浏览器的跨域限制(CORS)决定网页能否读取某个接口的响应。很多中转站和第三方 API 不允许网页直接访问,这时请求要经一台服务器转发,这台服务器就是转发代理。直连时 API Key 不经过任何第三方;经代理时,API Key、挑战和模型回答会经过这台服务器,再送到接口。
四种连接方式
API 配置底部的“连接方式”有四个选项,选中的选项下方有一句说明。它是浏览器级设置,对所有预设生效,不写入导出的配置文件。
| 选项 | 请求去向 |
|---|---|
| 自动 | 每次取样或探测开始前检查一次接口:允许网页直接访问时直连,否则经本站代理转发 |
| 直连 | 总是由浏览器直接请求接口,不经过代理。接口不允许网页跨域访问时,请求会失败 |
| 本站代理(默认) | 总是经本站代理 /api/proxy 转发 |
| 自建 Worker | 总是经你自己部署的 Worker 转发 |
每次运行开始时确定请求去向,运行中修改连接方式不影响正在进行的请求。
自动模式的检查
“自动”在每次取样或探测开始前检查一次,检查期间主按钮显示“检查连接…”,配置暂时锁定。检查最长约 8 秒;接口没有响应时按不允许处理,改经本站代理。检查结果不保存,下一次运行重新检查。
检查不会消耗额度。它发出的请求带的是假 API Key(sk-cors-check),请求体是空的 {},接口会在运行模型之前拒绝它,所以不运行模型,也不产生 token 费用。
检查也不会泄露你的真 API Key,真 Key 只出现在之后的正式请求里。检查请求和直连请求都不带 Cookie 和来源页面(Referer),也不跟随重定向,API Key 不会随重定向发往别处。
只要读到接口返回的任何 HTTP 状态(哪怕是拒绝),就说明网页可以直连。读不到时,原因可能是接口不允许网页访问,也可能是地址或网络有问题;这两种情况浏览器无法区分,“自动”都会改经本站代理。
flowchart TD
A["开始取样或探测"] --> B{"连接方式"}
B -->|直连| C["直连,不经过代理"]
B -->|本站代理| D["经本站代理转发"]
B -->|自建 Worker| E{"Worker 地址有效?"}
E -->|是| F["经自建 Worker 转发"]
E -->|否| G["不发送任何请求,提示填写地址"]
B -->|自动| H["检查接口是否允许网页直接访问"]
H -->|允许| C
H -->|不允许或连不上| D
直连失败时
直连请求在网络层失败时,页面提示两种可能:接口地址或网络有问题,或者接口不允许网页跨域访问(CORS)。浏览器无法确定是哪一种。先检查地址和网络;确认无误后,可以把连接方式改为“本站代理”或“自建 Worker”。失败的直连请求不会自动改走代理。
本站代理与自建 Worker
本站提供的代理,地址是 /api/proxy,由 Cloudflare Pages 的服务器函数实现,不保存 API Key,也不记录请求内容。你自己部署的网页如果放在 GitHub Pages 这类没有服务器函数的静态站点上,就没有这个代理,需要选择“自建 Worker”;“自动”在接口不允许直连时也会用到这个代理。
“检查代理”向填写的 Worker 地址发一次 GET 健康检查,不携带 API Key,结果只对应这个地址:
| 结果 | 可能的原因 | 怎么办 |
|---|---|---|
| Worker 可用 | 收到了 {"service":"fingerpoint-api-proxy"} | 无需处理 |
| 该地址有响应,但不允许本页面读取 | 填写的不是 Fingerpoint 代理,或者 Worker 的 ALLOWED_ORIGINS 没有包含当前页面的来源 | 先确认地址是你部署的 Worker,再把当前页面的来源加入 ALLOWED_ORIGINS |
| 该地址有响应,但不是 Fingerpoint 代理 | 地址指向了别的服务 | 确认填写的是 Worker 的地址 |
| 无法连接该地址 | DNS、证书或网络有问题 | 检查地址和网络 |
保存在浏览器里的内容
连接方式和 Worker 地址保存在浏览器本地,API 配置和 API Key 也保存在浏览器本地。这些内容不会上传到本站;API Key 只在发送请求时,按所选的连接方式发给接口或转发代理。清除本站的浏览器数据就会全部删除,连接方式恢复为“自动”。
最后更新于