用户没点同意就发请求,怎么拦住?

程序猿玉轩 阅读 4

我做了一个带用户行为追踪的页面,按法规得先让用户同意才能发分析请求。但我发现即使用户还没点“同意”,有些接口还是会偷偷发出去,这明显违规了。我试过在请求前加个判断,但好像时机不对,还是有漏网之鱼。

比如下面这段代码,我在组件初始化时就调用了 getUserData(),但这时候 consent 状态还是 false,可请求已经发了:

let userConsent = false;

function getUserData() {
  if (!userConsent) return;
  fetch('/api/track', { method: 'POST' });
}

// 页面加载就执行,但此时用户还没做选择
getUserData();

// 后面用户点了同意
document.getElementById('agree-btn').onclick = () => {
  userConsent = true;
};
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
a'ゞ锦玉
可以试试这样,把获取用户数据的逻辑从页面加载时移走,改成只在用户明确同意后才执行。另外,最好用一个函数来统一管理请求发送,确保每次发送前都检查同意状态。

先把 getUserData 改成这样:
function getUserData() {
if (!userConsent) return;
fetch('/api/track', { method: 'POST' });
}


然后把调用时机改到用户点击同意之后:
document.getElementById('agree-btn').onclick = () => {
userConsent = true;
// 用户同意了再获取数据
getUserData();
};


最后,如果有其他地方也可能会触发这个请求,记得都改成先判断 userConsent 状态。这种用户隐私相关的功能真得小心处理,不然容易出大问题啊。
点赞
2026-03-27 18:24