jsonp如何拦截window.location.href;
问题: 使用 jsonp 获取接口数据时, 偶尔接口会返回 window.location.href = ***
然后页面直接跳转了
期待解决: jsonp 能否获取接口返回的文本, 这样我就可以判断内容是否有跳转来决定是否执行接口返回的js文本(eval)
尝试过的方法: 无法使用axios等XHR技术去请求接口, 因为接口是第三方提供, 有跨域无解, 我试着使用 new Image().src 去缓存, 但我该如何获取 jsonp 返回的文本呢
有了解的大佬烦请给个思路, 洒家有礼了
回答:
JSONP
实现之所以要用函数来变通地获取返回结果,就是因为没有别的办法获取文本,所以先获取文本处理后再eval
是不可能的。
试了一下, Object.defineproperty
无法拦截 window.location
,Location
的原型链也没有找到href
,感觉像是被保护起来了。
剩下的方案就只有iframe
,iframe
虽然也是直接跳转,但至少宿主页面不会被其 location
影响。
不过如果我是开发 JSONP
的人,我也会想到 iframe
,顺便把 window.top
也跳转了。
但是值得一试。
回答:
这都什么年代了,如果第三方无法修改,直接自己这边加一个 Nginx 代理,给请求加上 CORS 头就可以了,几行 Nginx 配置的事情。
以上是 jsonp如何拦截window.location.href; 的全部内容, 来源链接: utcz.com/p/936217.html