cordova inappBrowser插件将用户名和密码传递给URL

时间:2017-06-23 13:22:44

标签: javascript cordova cordova-plugins inappbrowser

我正在使用cordova inappbrowser Plugin

当我在弹出窗口下面的任何移动浏览器中打开URL但是当我尝试通过inappbrowser打开相同的URL时,我没有获得此身份验证弹出窗口。它直接显示401认证错误。

enter image description here

为什么这种行为发生了变化?有什么我必须提供以获得像浏览器一样的行为吗?

或者我可以直接传递用户名和密码吗?那么如何实现基本身份验证呢?

我也尝试过表单提交方式。

<form name="frm" id="frm" method="POST" action="http://sample.xyz/test">
   <input type="hidden" name="username" id="username" value="abc" />
   <input type="hidden" name="password" id="password" value="xyz" />
</form> 

此外,我也尝试了以下谷歌搜索。

window.open("http://abc:xyz@sample.xyz/test");

帮助我。

2 个答案:

答案 0 :(得分:-1)

这不是任何页面的登录表单。它是一种htaccess(或类似的)身份验证。

因此,您无法通过登录表单提供凭据。

Google Groups

就此进行了讨论

您尝试的方法

window.open("http://'abc':'xyz'@sample.xyz/test");

将其更改为

window.open("http://abc:xyz@sample.xyz/");

window.open("http://abc:xyz@sample.xyz/test");

这将验证您访问该网站。

答案 1 :(得分:-1)

默认情况下,InAppBrowser仅使用url。

如果你的链接需要通过POST发送参数,你应该试试这个approche:

            var postParams = {
                "param1": param,
                "param2": param2
            };

            var pageContent = '<html><head></head><body><form id="loginForm" action="' + siteAddress + '" method="post">' +
                '<input type="hidden" name="postParams" value="' + encodeURI(JSON.stringify(postParams)) + '">' +
                '</form> <script type="text/javascript">document.getElementById("loginForm").submit();</script></body></html>';
            var pageContentUrl = 'data:text/html;base64,' + btoa(pageContent);

            ref = window.open(pageContentUrl, '_blank', 'location=no,zoom=no,hidden=yes,disallowoverscroll=no,toolbar=no,clearcache=no,clearsessioncache=no');