为什么前端不能直连接口 有人想在前端页面直接调语音通知接口,这很危险:account 与 password 会暴露在浏览器请求中,任何人打开开发者工具都能拿到凭证冒用账户外呼。正确做法是前端只调自家后端接口,由后端封装后再请求互亿无线。 一…
为什么前端不能直连接口
有人想在前端页面直接调语音通知接口,这很危险:account 与 password 会暴露在浏览器请求中,任何人打开开发者工具都能拿到凭证冒用账户外呼。正确做法是前端只调自家后端接口,由后端封装后再请求互亿无线。
一、整体架构
前端请求后端,后端校验登录态后调用 https://api.ihuyi.com/voice/vm。API Key 只存后端环境变量,前端接触不到。
二、后端封装示例
app.post('/api/send-voice',(req,res)=>{
const post=qs.stringify({account:process.env.IHY_ACCOUNT,
password:process.env.IHY_KEY,mobile:req.body.mobile,
content:req.body.content});
const r=https.request({hostname:'api.ihuyi.com',path:'/voice/vm',
method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'}},
resp=>{});
r.end(post);
});
三、前端调用
fetch('/api/send-voice',{method:'POST',
headers:{'Content-Type':'application/json'},
body:JSON.stringify({mobile:'13800138000',content:'您的验证码为1234'})});
四、安全建议
- API Key 只存后端环境变量,不下发前端;
- 后端对每用户限频防刷额度;
- 对 content 做敏感词与长度校验;
- code 为 2 才提示成功,否则稍后重试。