问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

一文搞定Ollama跨域难题!

创作时间:
作者:
@小白创作中心

一文搞定Ollama跨域难题!

引用
github
5
来源
1.
https://github.com/ollama/ollama/issues/4001
2.
https://github.com/ollama/ollama/issues/300
3.
https://github.com/ollama/ollama-js/issues/73
4.
https://github.com/ollama/ollama/issues/2335
5.
https://www.restack.io/p/ollama-answer-environment-variables-cat-ai

在使用Ollama时,你可能会遇到跨域资源共享(CORS)问题,特别是在尝试从手机或其他设备访问时。本文将为你提供详细的解决方案,帮助你轻松解决这一问题。

跨域问题原理简述

跨域问题源于浏览器的同源策略,当一个网页尝试访问不同源(域名、协议或端口)的资源时,浏览器会阻止这种请求,以保护用户安全。为了解决这个问题,我们需要正确配置Ollama的CORS设置。

Ollama的CORS配置方法

Ollama提供了环境变量来控制CORS设置。主要需要配置两个环境变量:

  • OLLAMA_HOST:用于指定Ollama服务监听的主机地址
  • OLLAMA_ORIGINS:用于设置允许跨域请求的来源

具体配置步骤

以下是不同操作系统下的配置方法:

Linux/macOS
  1. 停止正在运行的Ollama服务:

    pkill ollama
    
  2. 设置环境变量并重启服务:

    export OLLAMA_HOST=0.0.0.0  # 允许外部访问
    export OLLAMA_ORIGINS="*"   # 允许所有域名跨域(测试用)
    ollama serve
    
Windows(PowerShell)
  1. 停止Ollama服务(通过任务管理器结束进程)

  2. 设置环境变量并重启:

    $env:OLLAMA_HOST="0.0.0.0"
    $env:OLLAMA_ORIGINS="*"
    ollama serve
    

验证配置是否生效

你可以通过以下方式验证CORS配置是否生效:

使用curl检查响应头:

curl -I http://localhost:11434/api/tags

如果看到以下响应头,说明配置成功:

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *

安全注意事项

在生产环境中,不建议使用通配符*来允许所有来源。而是应该指定具体的域名:

export OLLAMA_ORIGINS="https://your-domain.com,http://localhost:3000"

常见问题排查

  1. 配置未生效

    • 确保Ollama服务完全重启(彻底终止旧进程)
    • 检查环境变量是否在启动服务前设置
  2. 浏览器控制台仍报CORS错误

    • 清除浏览器缓存
    • 检查请求URL是否包含端口号(如:11434
  3. 仅需临时测试
    可以在浏览器中安装CORS解除插件(如Chrome的CORS Unblock),但仅限开发调试使用。

通过以上配置,你的Ollama服务将允许跨域请求。如果需要外网访问,请务必加强安全防护(如设置身份验证)。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号