我可以通过代码 (javascript) 自动导航到一个站点,并让我的隐藏凭据毫无问题地进入(并拥有 cookie)
但是,在下一行代码中,当我尝试使用 (window.open) 进行重定向时,它无法识别我已经获得了 cookie,然后提示我输入凭据。有什么想法吗?
...
<form name="MyForm" action="#" method="post">
<input type="hidden" name="blah" value="blah" />
<input type="hidden" name="blah" value="blah" />
</form>
</div>
最佳答案
使用 JavaScript,我们可以在浏览器窗口之间进行通信,因为我们有对每个窗口的引用。创建新窗口时,JavaScript 方法 window.open() 会返回对新窗口的引用。子窗口还具有对通过 window.opener 窗口对象创建它的父窗口的引用。这些引用允许两个窗口相互通信和操作。
为了演示如何使用 cookie 在窗口之间进行通信,假设我们要打开一个窗口,然后在几秒钟后将其关闭。 查看明文?
1. var win = window.open('child.html');
2. setTimeout(function() { win.close(); }, 5000);
var win = window.open('child.html');
setTimeout(function() { win.close(); }, 5000);
代码将打开一个子窗口,并在 5 秒后使用对子窗口的引用和方法 close() 将其关闭。但是,如果由于某种原因我们没有引用,我们将无法调用 close 方法。那么让我们看看如何使用 cookie 来完成它: 查看明文?
1. window.open('child.html');
2. setTimeout(function() { setCookie('child', 'close'); }, 5000);
window.open('child.html');
setTimeout(function() { setCookie('child', 'close'); }, 5000);
这里我们打开一个窗口但不保存引用。然后在 5 秒后,我们将“close”写入名为“child”的 cookie(使用伪 setCookie() 函数)。这本身不会做任何事情,但如果子窗口需要 cookie,它可以在读取“关闭”时自行关闭。让我们假设以下 JS 在 child.html 中。 查看明文?
1. // child.html
2. setInterval(function() { getCookie('child') == 'close' ? this.close() : ''; }, 500);
// child.html
setInterval(function() { getCookie('child') == 'close' ? this.close() : ''; }, 500);
这将每半秒检查一次 cookie 并在 cookie 读取“关闭”时关闭窗口。
使用此方法,我们可以将任何命令发送到任何打开的窗口并让它们在不引用该窗口的情况下执行它。
关于javascript - cookie 和重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142396/