Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用xmlHTTPRequest在新窗口中打开安全应用程序_Javascript_Web Applications_Xmlhttprequest - Fatal编程技术网

Javascript 使用xmlHTTPRequest在新窗口中打开安全应用程序

Javascript 使用xmlHTTPRequest在新窗口中打开安全应用程序,javascript,web-applications,xmlhttprequest,Javascript,Web Applications,Xmlhttprequest,我们有一个要求,即我们希望能够从基本应用程序(BaseApp)启动新应用程序(NewApp)。BaseApp和NewApp的登录凭据相同,因为它们使用相同的标识存储。 BaseApp和NewApp位于不同的技术堆栈上,都是web应用程序。它们托管在不同的服务器上。 NewApp为web访问提供基本身份验证 如何使用java脚本从我的BaseApp上的链接启动NewApp。我希望能够注入基本的身份验证凭据 我尝试过使用xmlHTTPRequest,但它似乎更倾向于调用REST服务和处理获取的数据,

我们有一个要求,即我们希望能够从基本应用程序(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的响应。
我无法解决的问题是,如何在浏览器的新窗口/选项卡上呈现响应。

最简单的解决方案是使用以下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'); 
}