gpt4 book ai didi

javascript - 打开一个需要对另一个域进行 ajax 调用的新窗口

转载 作者:行者123 更新时间:2023-11-30 10:18:36 26 4
gpt4 key购买 nike

背景我们有两个托管在不同子域上的 Web 应用程序。 Application 1是一个内部管理系统。 Application 2是一个服务台系统。

我们可以修改应用程序 1 的源代码,但我们无权修改应用程序 2。

目标在应用程序 1 中显示一个订单链接,该链接将打开一个新窗口,其 URL 是应用程序 2 中的票证的 URL。

我们的想法是,我们的员工可以看到订单有针对它提出的帮助台票,只需单击订单上的链接即可查看票并回复它。

问题无论我如何打开新窗口(window.open、target="_blank"等),新窗口中的工单都无法向托管它的服务台系统发出任何 ajax 请求。

新窗口的 URL 是应用程序 2 的一部分。

在 Google 开发工具中,它告诉我“请求访问的框架具有“http”协议(protocol),被访问的框架具有“https”协议(protocol)。协议(protocol)必须匹配。”即使我使用 _blank 打开它。

如果我手动转到完全相同的 URL,一切正常......但是当我需要它从链接工作时,这无济于事。

有什么办法可以达到上面的目的吗?

如果没有,有什么办法可以打开一个新窗口,该窗口与打开它的窗口“分离”,从而不再适用同源策略?

编辑 2014-03-28 10:23我根本无法访问 App2 的代码。我无法对 App2 进行任何更改。任何答案都必须考虑到这一点。

我正在尝试从我的应用程序 (App1) 打开一个新窗口,其中该窗口的目标 URL 是 App2 中的一个页面。然后,App2 中的该页面需要能够使用 ajax 与 App2 的其他区域进行通信。这就是问题所在。因为 App1 打开窗口,同源策略阻止该窗口发出它的 ajax 请求。

最佳答案

我怀疑第二个(帮助台)应用程序上的 JavaScript 试图通过 window.opener(这可能导致您看到的跨源错误)和后续 JavaScript 访问第一个应用程序(通过 AJAX 获取内容)然后不会被执行。您可以通过在第二个应用程序中设置适当的断点来缩小范围。

如果这是原因,并且您无法修改帮助台应用程序的源代码,那么转到内部域中的 URL 如何重定向到帮助台?重定向应该导致window.opener 属性变为null(与手动输入URL 相同)。

假设https://admin.mydomain.co.ukhttp://helpdesk.mydomain.co.uk ,点击“Help Ticket”链接将转到内部应用程序中的 URL,例如https://admin.mydomain.co.uk/getHelp?ticketId ,它将以 301 响应和适当的 Location: http://helpdesk.domain.uk/help/ticketId 标题进行响应,将用户带到实际的帮助台 URL。

关于javascript - 打开一个需要对另一个域进行 ajax 调用的新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22531905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com