【发布时间】:2021-07-19 16:22:14
【问题描述】:
我希望能够从我的 react 组件向 IBM Watson TTS(文本转语音)发送一个字符串,即无需服务器端代码。动机是减少文件传输。我发现的所有示例(例如 this)都需要 Node.js 服务器。是否有根本原因导致无法通过在浏览器中运行的代码访问 Watson 服务?
【问题讨论】:
-
我没用过 ibm watson,但我猜你需要一个 api 密钥才能使用它?如果是这样,这就是它需要在服务器端完成的原因:保持 api 密钥私有。
-
@NicholasTower 是的,你知道。但是为什么我不能用前端的方法来保证 api 密钥的安全呢?例如,我可以将 api 密钥存储在后端数据库中,并在页面加载时通过 https 从服务器接收它。这样它就永远不会出现在代码中...
-
在浏览器中打开开发工具并转到网络选项卡以查看页面的任何流量非常容易。因此,如果浏览器调用 ibm 的服务器,该调用将在网络选项卡中可见,包括任何查询参数或请求标头,如 api 键。
-
@NicholasTower 不能通过 https 发送 (POST) 到 ibm 服务器的请求吗? (在这种情况下,它应该看起来是加密的,不是吗?)
-
是的,字节在通过网络发送时会被加密。但是您的计算机是制作信息的计算机;它知道它在发送什么。问题不在于有人拦截了您的数据包并找出了 api 密钥,而是为了首先创建这些数据包,您的浏览器已经知道 api 密钥。
标签: reactjs ibm-watson web-frontend