Javascript 使用xmlHTTPRequest在新窗口中打开安全应用程序
我们有一个要求,即我们希望能够从基本应用程序(BaseApp)启动新应用程序(NewApp)。BaseApp和NewApp的登录凭据相同,因为它们使用相同的标识存储。 BaseApp和NewApp位于不同的技术堆栈上,都是web应用程序。它们托管在不同的服务器上。 NewApp为web访问提供基本身份验证 如何使用java脚本从我的BaseApp上的链接启动NewApp。我希望能够注入基本的身份验证凭据 我尝试过使用xmlHTTPRequest,但它似乎更倾向于调用REST服务和处理获取的数据,而不是启动URL。 使用java脚本window.open(url)不允许我插入授权头 还有什么我可以探索的吗 其他信息: BaseApp的会话cookie不适用于NewApp。当我们第一次在BaseApp上完成基本身份验证时,它会生成一个需要使用的新会话Cookie。 通过xhr,我们可以调用NewApp的URL(使用基本身份验证)。这将返回带有会话cookie的响应。Javascript 使用xmlHTTPRequest在新窗口中打开安全应用程序,javascript,web-applications,xmlhttprequest,Javascript,Web Applications,Xmlhttprequest,我们有一个要求,即我们希望能够从基本应用程序(BaseApp)启动新应用程序(NewApp)。BaseApp和NewApp的登录凭据相同,因为它们使用相同的标识存储。 BaseApp和NewApp位于不同的技术堆栈上,都是web应用程序。它们托管在不同的服务器上。 NewApp为web访问提供基本身份验证 如何使用java脚本从我的BaseApp上的链接启动NewApp。我希望能够注入基本的身份验证凭据 我尝试过使用xmlHTTPRequest,但它似乎更倾向于调用REST服务和处理获取的数据,
我无法解决的问题是,如何在浏览器的新窗口/选项卡上呈现响应。最简单的解决方案是使用以下url调用新窗口
http://<user>:<pass>@newapp
在案例1.2中。您需要为后续调用提供额外的处理程序:
XMLReq.onload = function() {
window.open('http://NewApp?JSESSIONID='+XMLReq.getResponseHeader('Cookie'));
// note that 'JSESSIONID' depends on your backend implementation, this example is made for java backend
}
在案例2中。这很简单
XMLReq.onload = function() {
window.open('http://NewApp');
}
在这种情况下,最好的解决方案是OAuth或OpenID,但这取决于您的用例和系统环境,如果当前不支持OAuth或OpenID,可能需要更复杂的后端实现。感谢您的回复!我不能使用xhr.getResponseHeader(“Cookie”);这给出了一个错误:拒绝获取不安全的标题“Cookie”。在我的情况下,BaseApp的会话Cookie不适用于NewApp。当我们第一次在BaseApp上完成基本身份验证时,它会生成一个需要使用的新会话Cookie。通过xhr,我们可以调用NewApp的URL(使用基本身份验证)。这将返回带有会话cookie的响应。我无法解决的问题是,如何在浏览器的新窗口/选项卡上呈现响应。打开新窗口是通过javascript中的
window.open(url)
实现的
XMLReq.onload = function() {
window.open('http://NewApp');
}