用户没点同意就发请求,怎么拦住?
我做了一个带用户行为追踪的页面,按法规得先让用户同意才能发分析请求。但我发现即使用户还没点“同意”,有些接口还是会偷偷发出去,这明显违规了。我试过在请求前加个判断,但好像时机不对,还是有漏网之鱼。
比如下面这段代码,我在组件初始化时就调用了 getUserData(),但这时候 consent 状态还是 false,可请求已经发了:
let userConsent = false;
function getUserData() {
if (!userConsent) return;
fetch('/api/track', { method: 'POST' });
}
// 页面加载就执行,但此时用户还没做选择
getUserData();
// 后面用户点了同意
document.getElementById('agree-btn').onclick = () => {
userConsent = true;
};
先把 getUserData 改成这样:
然后把调用时机改到用户点击同意之后:
最后,如果有其他地方也可能会触发这个请求,记得都改成先判断 userConsent 状态。这种用户隐私相关的功能真得小心处理,不然容易出大问题啊。