You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将IBM Cloud的Watson服务关联到文件夹以在jQuery AJAX中无密钥调用

核心问题本质

你现在的API Key暴露是因为认证逻辑写在了前端浏览器运行的代码里,所有前端代码对用户都是完全可见的,不管你是不是部署在IBM云服务器上,只要代码在用户侧运行,密钥必然会泄露,这和你是不是在云内部网络没有关系。

你提到的映射到自有服务器路径的思路是完全可行的,本质就是用后端服务做代理层,把密钥藏在服务端,这里给你两个落地方式:


方案1:用自有云服务器做反向代理(最易上手)

你可以直接在你的云服务器上用Nginx配置反向代理规则,把你想要的/tone-analyzer路径绑定到IBM Tone Analyzer的官方接口,同时在Nginx配置里硬编码写入认证头,前端完全不需要接触密钥:

  1. 编辑你的Nginx站点配置,新增如下规则:
location /tone-analyzer {
    # 替换成你实际调用的IBM Tone Analyzer服务接口地址
    proxy_pass https://api.us-south.tone-analyzer.watson.cloud.ibm.com/instances/你的实例ID/;
    # 服务端自动注入请求头,密钥不会暴露给前端
    proxy_set_header Content-Type "text/plain;charset=utf-8";
    proxy_set_header Accept "application/json";
    proxy_set_header Authorization "Basic 替换成你之前btoa("apikey:你的密钥")生成的完整字符串";
    # 如果有跨域需求可以加以下配置
    add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
}
  1. 前端代码直接修改请求地址即可,不需要再传任何认证参数:
$.ajax({
    url: "/tone-analyzer",
    // 无需再配置Authorization头,Nginx会自动追加
})

方案2:配置IBM云API网关

如果你不想自己维护Nginx配置,也可以直接用IBM云自带的API网关服务:

  • 在云控制台创建API网关实例,新增路由/tone-analyzer,目标指向你的Tone Analyzer服务
  • 在网关的请求转换配置里,选择「注入HTTP头」,把Authorization头的固定值配置在网关侧,效果和Nginx代理完全一致,前端直接调用网关分配的/tone-analyzer路径即可。

疑问解答

  • 为什么不能直接内部调用?因为你的代码是跑在用户的浏览器上,不是跑在你IBM云的内部服务节点上,用户的浏览器属于公网环境,不在IBM云的内网范围内,所以必须走公网认证。如果是你自己的后端服务部署在IBM云同区域的资源里,才可以配置内网访问权限跳过公网认证。
  • 需不需要用API网关?两种方案都可以,已经有云服务器的话用Nginx代理上手更快,没有额外成本;如果想要更灵活的流量控制、限流等能力,可以用云厂商自带的API网关。

内容的提问来源于stack exchange,提问作者DamagedCyborg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:57:00