jsonp如何拦截window.location.href;

jsonp如何拦截window.location.href;

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

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

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

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


回答:

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

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


回答:

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

以上是 jsonp如何拦截window.location.href; 的全部内容, 来源链接: utcz.com/p/936217.html

回到顶部