无法在我的应用中与我的给定网址建立安全连接

时间:2016-03-15 09:27:44

标签: jquery angularjs cordova phonegap-desktop-app

我有一个表单,其中包含需要在提交表单时发布到url的隐藏值。 该网址用于支付卡,其用于安全目的, 因此,当尝试使用我的应用程序执行该过程以打开网址并使用它发布隐藏值时,它无法建立安全连接并且应用程序崩溃。 但是当我在我的电脑浏览器中这样做时它工作正常没有错误。

这是我的表格:

<form name="hidden_form" id="hidden_form" action="{{ bookings.payment.ACSUrl }}" method="POST">
  <input type="hidden" name="PaReq" value="{{ bookings.payment.PaReq }}" />
  <input type="hidden" name="TermUrl" value="{{ bookings.payment.TermUrl }}" />
  <input type="hidden" name="MD" value="{{ bookings.payment.md }}" />
</form>

网址是: https://webapp.securetrading.net/acs/visa.cgi 使用我的应用程序(phonegap) 提交表单时需要时间并点击网址,但错误提示无法建立安全连接,然后是网址和应用程序崩溃。 需要帮助 我希望每个人都能理解我想说的话

1 个答案:

答案 0 :(得分:0)

对于phonegap,你需要添加白名单插件(它曾经是核心插件,所以你可能已经拥有它):

https://github.com/apache/cordova-plugin-whitelist

此处列出了帮助文档:

http://docs.build.phonegap.com/en_US/configuring_access_elements.md.html

安装插件后,您还需要在config.xml中添加此行:

<access origin="https://securetrading.net/" subdomains="true"/>

编辑:

为了能够在不打开设备网络浏览器的情况下提交表单,您需要通过JavaScript提交表单。由于您标记了您使用的是jQuery,因此这里有代码:

    $(document).on('submit', 'form.hidden_form', function() {            
            $.ajax({
                url     : $(this).attr('action'),
                type    : $(this).attr('method'),
                dataType: 'json',
                data    : $(this).serialize(),
                success : function( data ) {
                             alert('Submitted');
                },
                error   : function( xhr, err ) {
                             alert('Error');     
                }
            });    


return false;
    });

编辑 - 4月12日:

这是一个完整的不同的例子。我从您的URL获取了500错误代码,因为我假设我发送了无效数据,但是它会进入网站并传递数据:

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="mobile-web-app-capable" content="yes" />
    <meta http-equiv="Content-Security-Policy" content="default-src * data:; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'">
    <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
    <link href='https://fonts.googleapis.com/css?family=Roboto:400,300italic,300,400italic,500,700,700italic,500italic' rel='stylesheet' type='text/css'>
    <title>Onsen UI Forum Help by Munsterlander</title>

    <link rel="stylesheet" href="https://cdn.rawgit.com/OnsenUI/OnsenUI-dist/2.0.0-beta.8/css/onsenui.css" type="text/css" media="all" />
    <link rel="stylesheet" href="https://cdn.rawgit.com/OnsenUI/OnsenUI-dist/2.0.0-beta.8/css/onsen-css-components.css">
    <script src="https://cdn.rawgit.com/OnsenUI/OnsenUI-dist/2.0.0-beta.8/js/onsenui.js"></script>
    <script src="components/loader.js"></script>

    <script>
        function formHelp(){
            my_form=document.createElement('FORM');
            my_form.name='myForm';
            my_form.method='POST';
            my_form.action='https://webapp.securetrading.net/acs/visa.cgi';

            my_tb=document.createElement('INPUT');
            my_tb.type='HIDDEN';
            my_tb.name='PaReq';
            my_tb.value='000';
            my_form.appendChild(my_tb);

            my_tb=document.createElement('INPUT');
            my_tb.type='HIDDEN';
            my_tb.name='TermUrl';
            my_tb.value='000';
            my_form.appendChild(my_tb);

            my_tb=document.createElement('INPUT');
            my_tb.type='HIDDEN';
            my_tb.name='MD';
            my_tb.value='000';
            my_form.appendChild(my_tb);

            document.body.appendChild(my_form);
            my_form.submit();
        }

    </script>    
</head>

<body>

<ons-tabbar id="myNav">
  <ons-tab page="home.html" active="true">
    <ons-icon icon="ion-home"></ons-icon>
    <span style="font-size: 14px">Home</span>
  </ons-tab>
  <ons-tab page="fav.html">
    <ons-icon icon="ion-star"></ons-icon>
    <span style="font-size: 14px">Favorites</span>
  </ons-tab>
  <ons-tab page="settings.html">
    <ons-icon icon="ion-gear-a"></ons-icon>
    <span style="font-size: 14px">Settings</span>
  </ons-tab>
</ons-tabbar>
<ons-template id="home.html">
  <p>Home</p>
  <ons-button onclick="formHelp()">Submit JS Form</ons-button>
  <div style="padding:10px;">    
  </div>
  <form name="hidden_form" id="hidden_form" action="https://webapp.securetrading.net/acs/visa.cgi" method="POST">
      <input type="hidden" name="PaReq" value="000" />
      <input type="hidden" name="TermUrl" value="000" />
      <input type="hidden" name="MD" value="000" />
      <input type="submit" name="submit" value="Submit Form"/>
    </form>
</ons-template>
<ons-template id="fav.html">
  <p>Fav</p>
</ons-template>
<ons-template id="settings.html">
  <p>Settings</p>
</ons-template>

</body>
</html>

这是配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns="http://www.w3.org/ns/widgets" id="com.example.helloworld" version="1.0.0">
  <name>Onsen 2.0 Quick Start</name>
  <description/>
  <author/>
  <content src="index.html"/>
  <access origin="*"/>
  <allow-navigation href="*"/>
  <allow-intent href="itms:*"/>
  <allow-intent href="itms-apps:*"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="Orientation" value="default"/>
  <preference name="loglevel" value="DEBUG"/>
  <preference name="AndroidLaunchMode" value="singleTop"/>
  <preference name="ErrorUrl" value=""/>
  <preference name="Fullscreen" value="false"/>
  <preference name="KeepRunning" value="true"/>
  <preference name="SplashScreen" value="screen"/>
  <preference name="SplashScreenDelay" value="1000"/>
  <preference name="AllowInlineMediaPlayback" value="false"/>
  <preference name="AutoHideSplashScreen" value="true"/>
  <preference name="BackupWebStorage" value="cloud"/>
  <preference name="EnableViewportScale" value="false"/>
  <preference name="FadeSplashScreen" value="true"/>
  <preference name="FadeSplashScreenDuration" value=".25"/>
  <preference name="KeyboardDisplayRequiresUserAction" value="true"/>
  <preference name="MediaPlaybackRequiresUserAction" value="false"/>
  <preference name="ShowSplashScreenSpinner" value="false"/>
  <preference name="SuppressesIncrementalRendering" value="false"/>
  <preference name="TopActivityIndicator" value="gray"/>
  <preference name="GapBetweenPages" value="0"/>
  <preference name="PageLength" value="0"/>
  <preference name="PaginationBreakingMode" value="page"/>
  <preference name="PaginationMode" value="unpaginated"/>
  <feature name="LocalStorage">
    <param name="ios-package" value="CDVLocalStorage"/>
  </feature>
  <preference name="UIWebViewDecelerationSpeed" value="normal"/>
  <preference name="monaca:AndroidIsPackageNameSeparate" value="false"/>
  <preference name="monaca:targetFamilyiPhone" value="1"/>
  <preference name="monaca:targetFamilyiPad" value="1"/>
</widget>

这些只不过是快速启动应用程序,所有这些应用程序似乎与您的网站进行了良好的沟通。我认为你可能没有的最重要的部分是:

<access origin="*"/>
<allow-navigation href="*"/>

基本软件包中只安装了monaca插件,splashscreen插件和白名单插件。