javascript - 使用 Javascript/typecript 在弹出窗口中打开网站并在成功登录时关闭
问题描述
我正在尝试从网站 B 获取数据到网站 A。这需要我手动登录到网站 B。我要做的是从 A 打开 B 的弹出窗口,登录到 B 并自动关闭包含 B 的弹出窗口.
问题是 B 和 A 是跨域的,Javascript 具有安全功能,阻止我使用获取网站 B 的当前 URL 的功能,检测 B 的 URL 的变化。
有什么解决方法吗?
我的代码如下:
private websiteBRedirect(){
let popupWindow = window.open("websiteB", 'popup','height=' + 600 + ',width=' + 600 + ',resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,location=yes');
let timer = setInterval(checkChild, 500);
let url = this.authUrl[0];
function checkChild() {
if (popupWindow.closed) {
window.location.href = url;
clearInterval(timer);
}
}
}
在这里,我创建了一个名为“popupWindow”的弹出变量,它加载了 websiteB 的登录页面(使用 websiteB 而不是实际的机密网站)。我想检查用户是否已成功登录网站 B,然后关闭弹出窗口。关闭弹出窗口后,如果登录成功,我的代码将我的当前 URL(websiteA)更改为另一个 URL,但遗憾的是我无法测试。
解决方案
您可以将 JSONP 用于跨域请求,
JSONP 只是指“带填充的 JSON”。它本质上是一个包裹在 URL 中指定的回调函数的 JSON 响应。例如,下面是一个 JSON 响应。
{ “username”: “sdaityari”, “name”: “Shaumik Daityari”}
回调函数指定为 processData 的相同响应如下。
processData({ “username”: “sdaityari”, “name”: “Shaumik Daityari”})
这应该可以帮助您找出解决问题的方法,因为您没有发布任何我可以使用的代码。
推荐阅读
- haproxy - 使用正则表达式对 URL 的第一部分进行速率限制
- java - 关于HTTP-Proxy-Servlet如何解决目标路径为动态代理时目标服务器的静态资源加载问题
- spring - 休眠 UUID 与字符串行为 - 类似的 ID 加载为相同的实体,第二个实体被忽略/覆盖 - 冲突
- android - 如何通过邮件中的android深层链接打开片段?
- php - Apache 2.4 + Restler + PHP-FPM 无法访问像 http://test.php/test 这样的 url
- ios - 基于 Xcode 版本 12.5.1 构建的 Fluuter App 在 iOS 14.7 上崩溃
- facebook - 在 ADMOB 和 Facebook 竞价集成中出现错误得到“广告源没有填充”
- php - 上传 laravel 8 项目后的 HTTP ERROR 500
- r - R,XPath,文本抓取:获取节点内的文本,同时过滤其后代之一的属性值
- docker - Jupyterhub SwarmSpawner 选择工作节点