无法从WP8 phonegap应用程序发出“https”请求

时间:2014-07-23 10:18:57

标签: ajax internet-explorer cordova windows-phone-8 https

我无法在phonegap WP8应用上发出“https”请求。但是,它适用于“http”。我不确定它是IE问题还是任何安全例外。我正在使用lumia 520来测试应用程序。尝试在设备浏览器(lumia 520)上运行相同的代码并获得相同的结果。还尝试添加$ .support.cors = true和jQuery.support.cors = true;还尝试编辑config.xml,更改“access origin =”*“”以指定我的服务器URL。相同的代码适用于其他浏览器和Android,ios phonegap应用程序。这是我的代码。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="viewport"
    content="width = device-width, minimum-scale=1, maximum-scale=1,user-scalable=no">
<title>myPage</title>
</head>
<link rel="stylesheet" href="js/jquery.mobile-1.2.0.css" />
<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.mobile-1.2.0.js"></script>
<script type="text/javascript">
function auth(){

    var serverURL = "https://XXXXXX.YYYYY.com/file1/servlet"; 
    try {
        var value = $('#name1').val();
        var value1 = $('#pass1').val();
        var key = $('#key').val();
        var model="Browser";
          var make="Browser";
          var version='2.40';
        var formData = {
            "UserID" : value,
            "Password" : value1,
            "Type" : "Login",
            "MAKE" : make,
            "MODEL" : model,
            "APP_VERSION" : version,
            "Hybrid" : "Hybrid"
        }
    } catch (Err) {

    }
    console.log(formData)
    var JSONs = JSON.stringify(formData);

    $.ajax({
        crossDomain : true,
        type : "POST",
        url : serverURL,
        data : JSONs,
        datatype : "json",
        success : onSuccessLogin,
        error : errorFailed
    });
     function onSuccessLogin(data) {
         console.log("success"+JSON.stringify(data));
         alert(JSON.stringify(data));
         var returnData = JSON.parse(data);
         if(returnData.ErrorMsg == "") {
             alert("Login Success");
         }
     }
     function errorFailed(error) {
            alert("Unable to process"+JSON.stringify(error));
        }
}
</script>
<body>
    <div data-role="page" id="Login">
        <input type="hidden" id="key" value="0000000000000000000" /> 
        <input type="text" placeholder="Username" id="name1" value="" />
        <input type="password" placeholder="Password" id="pass1" value="" />
        <a href="#" onclick="auth();">Login</a>
    </div>
</body>
</html>
带有“https”请求的

它总是返回{“readyState”:0,“responseText”:“”,“status”:0,“statusText”:“error”}。请帮助

2 个答案:

答案 0 :(得分:2)

这不是“HTTPS”问题,您可以尝试使用此示例

var req = new XMLHttpRequest();
req.open('GET', 'https://api.github.com/user/repos?page=2&per_page=100', false);
req.onreadystatechange = function () {
  $(document.body).append(" -> "+req.responseText + "," + req.readyState + "<br>" + window.location);
}
req.send(null);

问题来自服务器,你应该添加标题

Access-Control-Allow-Origin: *

或您的WP URI

Access-Control-Allow-Origin: ms-appx-web://xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

您可以通过“window.location”调用获取您的应用“ms-appx-web:// xxxx ...”值,或者在身份名称=“xxxxx ....”中查看您的.appxmanifest。 &GT;

希望这有帮助!

答案 1 :(得分:1)

这与设备日期有关...我的错误,从未检查设备日期,它没有同步,并且比当前时间提前1年。重置它真的很神奇!!!