我有一个使用Azure AD进行身份验证的网站,在该网站中我有一个iframe也使用Azure AD进行身份验证。我面临的问题是访问令牌在30-60分钟后到期,然后未经过身份验证,直到页面刷新。所以我编写了代码来刷新页面并将iframe的当前url存储在会话存储中,并在重新加载时将该url存放在iframe的src中。所有这些工作直到令牌过期,然后页面始终转到原始iframe源。这是代码:
PlotOptionsBar
如果有人可以帮我修改这段代码,那么无论iframe在会话存储中的哪个网址都会很棒。
答案 0 :(得分:0)
似乎问题是当它触发refresh()
时,它将最终刷新顶部窗口,因此所有脚本和DOM都将刷新并初始化。因此,您的iframe始终会转到原始页面。
请考虑以下代码段:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
document.domain = 'company.com';
if (sessionStorage.getItem('url') == null) {
window.location;
} else {
$("#MSOPageViewerWebPart_WebPartWPQ2").attr('src',sessionStorage.getItem('url'));
};
$(window).bind("load", function() {
sessionStorage.removeItem('url');
setTimeout(refresh, 30000);
});
function refresh () {
console.log('refresh')
var myURL = $("#MSOPageViewerWebPart_WebPartWPQ2").get(0).contentWindow.location;
console.log(myURL);
sessionStorage.setItem('url', myURL);
console.log(sessionStorage.getItem('url'));
// top.parent.location.href = top.parent.location.href;
};
</script>