浏览器插件/局域网前端调用本地模型报 403 CORS 拒绝或反代 502
排查浏览器插件(Page Assist / 沉浸式翻译)或局域网 Web 前端调用 11434 报 403 Forbidden、CORS 拦截或混合内容阻断。
复现报错请求,或在终端用下方带 Origin 头的 curl 命令模拟浏览器跨域请求。
curl -i -X OPTIONS http://127.0.0.1:11434/api/tags -H "Origin: chrome-extension://test" -H "Access-Control-Request-Method: POST"
若返回 HTTP/1.1 403 Forbidden,说明被 Ollama 内置的 Origin 跨域白名单直接拦截。
「浏览器插件/局域网前端调用本地模型报 403 CORS 拒绝或反代 502」的全部 1 步终端探测命令与分支判据
无需逐层点击交互,以下列出本故障决策树每一层的宿主机只读探测命令、预期基线提示与输出流向。
复现报错请求,或在终端用下方带 Origin 头的 curl 命令模拟浏览器跨域请求。
curl -i -X OPTIONS http://127.0.0.1:11434/api/tags -H "Origin: chrome-extension://test" -H "Access-Control-Request-Method: POST"
若返回 HTTP/1.1 403 Forbidden,说明被 Ollama 内置的 Origin 跨域白名单直接拦截。
- • 返回 HTTP 403 Forbidden(OPTIONS 预检或 POST 被拒)
→ sol-ollama-origins-env - • 直连正常,但经过 Nginx / Caddy 反向代理后报 403 或 502
→ sol-proxy-host-header-rewrite - • 请求未发出即被浏览器拦截(Mixed Content:HTTPS 网页调用 HTTP 局域网 IP)
→ sol-mixed-content-https
「浏览器插件/局域网前端调用本地模型报 403 CORS 拒绝或反代 502」包含的 3 类根因、修复代码与验收命令
修复方案:配置 OLLAMA_ORIGINS 放行浏览器扩展与前端域名
sol-ollama-origins-env为防止恶意网页通过跨域探测本机模型,Ollama 默认拒绝带有非 localhost Origin 头的请求(包括 `chrome-extension://`、`moz-extension://` 与局域网前端)。
- 设置环境变量 OLLAMA_ORIGINS="chrome-extension://*,moz-extension://*,http://192.168.*"(优先按协议最小范围放行)。
- 重启 Ollama 服务,重新执行带 Origin 头的探测命令确认返回 200/204。
# macOS (launchctl) launchctl setenv OLLAMA_ORIGINS "chrome-extension://*,moz-extension://*,http://localhost:*" # Linux systemd override (/etc/systemd/system/ollama.service.d/override.conf) [Service] Environment="OLLAMA_ORIGINS=chrome-extension://*,moz-extension://*,http://192.168.*"
[边界说明]安全警告:切勿在未加鉴权代理的情况下同时开启 OLLAMA_HOST=0.0.0.0 与 OLLAMA_ORIGINS=*,否则你浏览的任意公网网页都能偷调本机模型。
curl -i -X OPTIONS http://127.0.0.1:11434/api/tags -H "Origin: chrome-extension://test" -H "Access-Control-Request-Method: POST"修复方案:在 Nginx / Caddy 反向代理中重写 Host 请求头
sol-proxy-host-header-rewrite新版 Ollama 为防范 DNS 重绑定攻击会校验 HTTP Host 头。若反向代理透传了自定义域名(如 Host: ai.homelab.local),Ollama 会直接拒绝并返回 403。
- 保持宿主机 Ollama 仅监听 127.0.0.1:11434。
- 在 Nginx 配置中添加 `proxy_set_header Host localhost:11434;`(或在 Caddy 中配置 `header_up Host localhost:11434`)。
location / {
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host localhost:11434;
proxy_buffering off;
proxy_read_timeout 300s;
}[边界说明]建议配合 Nginx 的 Authorization Bearer 校验使用,兼顾兼容性与局域网鉴权安全。
curl -i http://127.0.0.1:11434/api/version -H "Host: localhost:11434"修复方案:使用 Caddy / Tailscale 启用 HTTPS 或改为后端转发
sol-mixed-content-https现代浏览器实施严格的混合内容(Mixed Content)与私有网络访问限制:HTTPS 站点无法直接向明文 HTTP 局域网 IP(如 http://192.168.1.50:11434)发起请求。
- 若使用 Open WebUI / LobeChat 等应用,请在服务端环境变量中配置 Ollama 地址(走服务端代理转发),而非开启“浏览器直接请求”模式。
- 或者通过 Caddy 自签证书 / Tailscale HTTPS 为局域网节点提供加密端点。
# Caddyfile with automatic local TLS & Host rewrite
https://ollama.homelab.internal {
tls internal
reverse_proxy 127.0.0.1:11434 {
header_up Host localhost:11434
flush_interval -1
}
}[边界说明]浏览器将本机 `http://127.0.0.1` 视为安全上下文放行,但任何 `http://192.168.x.x` 局域网地址在 HTTPS 页面下都会被无条件拦截。
caddy validate --config Caddyfile本地模型 403 CORS 跨域拒绝、Nginx/Caddy 反代报错与局域网鉴权排障指南
彻底解决浏览器插件(Page Assist / 沉浸式翻译)或局域网前端调用 11434 报 HTTP 403 Forbidden、反向代理 DNS 重绑定拦截与 HTTPS 混合内容阻断。
Nginx 1.26 / Caddy 2.8 · Ollama 0.5.7 · 浏览器扩展与局域网多端调用实测
Ollama 0.5.7 · Nginx 1.26+ · Caddy 2.8+
100% 局域网受控鉴权网关 — 让 Ollama 原生进程严格保持在 127.0.0.1 回环地址,通过反向代理层向局域网提供强制 Bearer 密钥校验的安全接口。