JSONP还能用吗?为什么现在都说是安全风险?

程序猿建杰 阅读 28

最近在重构一个老项目,发现它还在用 JSONP 跨域请求第三方数据。我查了下资料,说 JSONP 有 XSS 风险,但又没太明白具体怎么出问题的。我自己试着重构成 fetch + CORS,但对方接口不支持 OPTIONS 预检,直接被浏览器拦了。

现在纠结要不要继续用 JSONP,毕竟功能是能跑的。下面是我现在用的 React 代码:

useEffect(() => {
  const script = document.createElement('script');
  script.src = <code>https://api.example.com/data?callback=handleResponse</code>;
  document.body.appendChild(script);
  window.handleResponse = (data) => {
    setData(data);
  };
  return () => {
    document.body.removeChild(script);
    delete window.handleResponse;
  };
}, []);

这种写法到底哪里不安全?有没有更稳妥的替代方案?

我来解答 赞 15 收藏
二维码
手机扫码查看
1 条解答
轩辕顺红
改成这样:先别用 JSONP,它本质是