【问题标题】:cordova inappBrowser plugin pass username and password to URLcordova inappBrowser 插件将用户名和密码传递给 URL
【发布时间】:2017-11-27 02:21:15
【问题描述】:

我正在使用cordova inappbrowser Plugin。

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

为什么会发生这种行为变化?我必须提供什么才能获得与浏览器相同的行为吗?

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

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

<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");

帮帮我。

【问题讨论】:

  • 如果您从 URL 中删除单引号是否有效? IE。 window.open("abc:xyz@sample.xyz/test"); 您应该能够使用 inappbrowser 以这种方式传递身份验证凭据。
  • @JordanBurnett 请查看我更新的问题。是的,我试过没有单引号得到同样的错误。
  • @Suhas 检查答案,如果您有任何问题,请告诉我。如果还是遇到401,也可以加个报错截图
  • @SagarV 正常 401 错误,表示由于凭据无效而拒绝访问。即使我没有在 window.open 中通过凭据,也来了
  • 只需打开一个包含alert("ABC"); 的测试页面,然后告诉我会发生什么

标签: javascript cordova cordova-plugins inappbrowser


【解决方案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");

这将验证您对网站的身份。

【讨论】:

  • 我已经尝试不带引号也得到相同的行为。但是,为什么移动浏览器身份验证弹出窗口中的这种行为变化即将到来,但是当我尝试通过插件打开时,它却没有出现。
  • 示例正文加载警报消息正在 inapp 插件中工作。
  • 所以,验证弹窗被插件屏蔽了
  • 可能我不确定。有没有其他方法可以做到这一点?
  • 明天早上我会尽力给你一个解决方案
【解决方案2】:

默认情况下,InAppBrowser 仅适用于 url。

如果您的链接需要通过 POST 发送参数,您应该尝试以下方法:

            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');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 2011-06-19
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    相关资源
    最近更新 更多