Page Assist项目Ollama调用403错误的解决方案解析
问题背景
在Page Assist项目中,用户在使用Ollama本地服务时遇到了一个典型的403状态码错误。该问题表现为:在首次对话中可以成功激活"Search Internet"功能,但在同一会话的后续尝试中会出现"Ollama call failed with status code 403"的错误提示。
技术分析
403状态码在HTTP协议中表示"禁止访问"(Forbidden),这通常是由于跨域资源共享(CORS)策略限制导致的。在本地开发环境中,当Web应用尝试访问不同源(协议+域名+端口)的资源时,浏览器会强制执行CORS策略检查。
Ollama作为本地AI服务运行在特定端口,而Page Assist作为浏览器扩展运行在浏览器环境中,两者属于不同的源。虽然Page Assist尝试通过重写请求头来解决这个问题,但在某些浏览器(如Chrome)中,这种解决方案并不总是可靠。
解决方案
最根本的解决方案是通过配置Ollama服务本身来放宽CORS限制。具体方法是在运行Ollama的环境中设置以下环境变量:
OLLAMA_ORIGINS=*
这个配置告诉Ollama服务接受来自任何源的请求,从而解决跨域问题。
各平台配置方法
Windows系统
- 通过开始菜单搜索"环境变量"
- 选择"编辑系统环境变量"
- 在系统属性窗口中点击"环境变量"
- 在系统变量部分点击"新建"
- 变量名:OLLAMA_ORIGINS
- 变量值:*
- 保存更改后重启Ollama服务
macOS系统
- 打开终端应用
- 编辑shell配置文件:
- Bash用户:
nano ~/.bash_profile - Zsh用户:
nano ~/.zshrc
- Bash用户:
- 在文件末尾添加:
export OLLAMA_ORIGINS=* - 保存文件后执行
source命令使配置生效 - 重启Ollama服务
Linux系统
- 打开终端
- 编辑shell配置文件:
- Bash用户:
nano ~/.bashrc - Zsh用户:
nano ~/.zshrc
- Bash用户:
- 在文件末尾添加:
export OLLAMA_ORIGINS=* - 保存文件后执行
source命令使配置生效 - 重启Ollama服务
安全考虑
虽然将OLLAMA_ORIGINS设置为星号(*)可以解决跨域问题,但这会允许任何网站访问您的Ollama服务。在生产环境中,建议指定具体的允许来源,例如:
OLLAMA_ORIGINS=http://localhost:3000,http://127.0.0.1:3000
这样可以限制只允许特定来源的请求,提高安全性。
总结
通过正确配置Ollama服务的CORS策略,可以有效解决Page Assist项目中出现的403访问错误。这种解决方案不仅适用于Page Assist,对于其他需要与本地Ollama服务交互的Web应用也同样适用。开发者在处理类似问题时,应该优先考虑在服务端解决CORS限制,而不是依赖客户端的变通方案。
对于普通用户来说,按照上述步骤配置环境变量后,即可获得稳定的使用体验。而对于开发者,理解CORS机制有助于更好地设计和调试分布式应用架构。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



