jsonp如何拦截window.location.href;

问题: 使用 jsonp 获取接口数据时, 偶尔接口会返回 window.location.href = *** 然后页面直接跳转了

期待解决: jsonp 能否获取接口返回的文本, 这样我就可以判断内容是否有跳转来决定是否执行接口返回的js文本(eval)

尝试过的方法: 无法使用axios等XHR技术去请求接口, 因为接口是第三方提供, 有跨域无解, 我试着使用 new Image().src 去缓存, 但我该如何获取 jsonp 返回的文本呢

有了解的大佬烦请给个思路, 洒家有礼了

阅读 5k
2 个回答
JSONP 实现之所以要用函数来变通地获取返回结果,就是因为没有别的办法获取文本,所以先获取文本处理后再eval是不可能的。

试了一下, Object.defineproperty 无法拦截 window.locationLocation的原型链也没有找到href,感觉像是被保护起来了。
剩下的方案就只有iframeiframe 虽然也是直接跳转,但至少宿主页面不会被其 location 影响。
不过如果我是开发 JSONP 的人,我也会想到 iframe ,顺便把 window.top 也跳转了。
但是值得一试。

这都什么年代了,如果第三方无法修改,直接自己这边加一个 Nginx 代理,给请求加上 CORS 头就可以了,几行 Nginx 配置的事情。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题