Javascript 使用CORS在另一个站点上处理重新验证

Javascript 使用CORS在另一个站点上处理重新验证,javascript,ajax,cors,single-page-application,siteminder,Javascript,Ajax,Cors,Single Page Application,Siteminder,我正在尝试使用不同的授权网站处理重新验证,同时在我的主页上的单页应用程序(SPA)中处理。这两个网站都是客户端网站的内部网站 我不能使用标准的“重定向”方法,因为我将丢失SPA JavaScript上下文 我已经调查并在Auth网站上设置了CORS,因此它现在返回Access Control Allow Origin:https://www.mywebsite.com。当我尝试将Auth页面加载到jQueryUI对话框中时,它失败了,因为所有脚本都尝试在主网站的上下文中加载 i、 e. 从我的网

我正在尝试使用不同的授权网站处理重新验证,同时在我的主页上的单页应用程序(SPA)中处理。这两个网站都是客户端网站的内部网站

我不能使用标准的“重定向”方法,因为我将丢失SPA JavaScript上下文

我已经调查并在Auth网站上设置了CORS,因此它现在返回
Access Control Allow Origin:https://www.mywebsite.com
。当我尝试将Auth页面加载到jQueryUI对话框中时,它失败了,因为所有脚本都尝试在主网站的上下文中加载

i、 e.
从我的网站
https://www.mywebsite.com/static/

我正在加载
https://www.auth.com/login.html

当加载到JQuery UI对话框中时,它会尝试将其脚本加载为
https://www.mywebsite.com/static/scripts/authscript.js

而不是
https://www.auth.com/scripts/authscript.js

我还尝试通过更改
src
标记将Auth页面加载到
iframe
中,但它只是重新加载了页面


有没有办法在我试图显示的CORS网页的上下文中更改源目录?

因此我无法将该网页正确加载到标准的jQuery模式对话框中,并且我无法控制连接到的Auth页面。为了解决这个问题,我调查了我在
iframe
中遇到的问题,并使用HTML5的特性
sandbox
来修复它

如果将页面加载到
iframe
中,则Auth页面使用“中断”脚本重新加载页面,这显然破坏了我的SPA上下文。HTML5允许您限制iframe的内容

  • 允许表单
    允许
    表单
    提交
  • 允许脚本
    让它运行JavaScript
  • >代码允许相同的原产地< /代码>让它考虑与脚本相同的原点(即AuthWeb站点),这是启用Cookie 所必需的。
  • 需要注意的是,我没有包括
    允许顶部导航
    ,这是允许重新加载页面和丢失JavaScript上下文的原因
瞧,jQuery模式对话框(包含
iframe
)中显示的auth页面,无需弹出另一个窗口

CORS是允许重定向到Auth网站的必要条件(在涉及JavaScript之前在浏览器中发生)。您还可以捕获“Access control allow origin”异常

带有Siteminder登录名的iframe正在从我的站点访问一个页面,该页面在用户登录后在localStorage中设置一个值。应用程序只是在后台轮询localStorage,查看用户是否已成功登录


希望这对其他人有用。

您是否为脚本使用了相对路径?在“身份验证”页面中-它们不是我的脚本。是的,它们是相对路径。我希望有一种方法可以改变“来源”,因为这是我认为我使用CORS所做的有效方法。你应该在新窗口中打开它。一直在试图避免这种情况,因为它是一种糟糕的用户体验,例如,如果不是由按钮按下触发的,则需要禁用弹出阻止程序(在本例中,我们使用的是AJAX调用)。全屏运行的用户错过了其他窗口等。