【问题标题】:AJAX post request working in browser, not on Phonegap AppAJAX 发布请求在浏览器中工作,而不是在 Phonegap 应用程序上
【发布时间】:2017-08-18 17:53:53
【问题描述】:

我在 iOS10 上使用 Phonegap 应用程序测试一个简单的 AJAX 请求失败。

代码如下(在浏览器中完美运行):

if($.trim(firstname).length > 0 & $.trim(email).length > 0 & $.trim(password).length > 0) {

            console.log("input checked");

            $.support.cors = true;
            $.ajax({
                type: "POST",
                url: "http://my-server.com/signup.php",
                data: dataString,
                crossDomain: true,
                cache: false,

                beforeSend: function(data) {
                    console.log("connecting to server");
                },

                //display success/fail message - put something in data on server
                success: function(data, textString, xhr) {
                    if(data == "success") {
                        localStorage.login = "true";
                        localStorage.email = email;
                        mainView.router.loadPage("swipe.html");
                    } else if(data == 'exist') {
                        myApp.alert("Account already exists", "Login Failed");
                    }
                },

                error: function(xhr, ajaxOptions, errorThrown) {
                    console.log("error msg: ");
                    console.log(xhr);
                    console.log(errorThrown);
                    myApp.alert("Unknown error, please try again", "Login Failed");
                },

                complete: function(data) {
                    if(data.readyState == "0") {
                        console.log("unsent");
                    } else if(data.readyState == "4") {
                        console.log("done");
                    }   
                }

            });
        } return false;
    }

我的 config.xml 文件完全按照之前许多答案中的概述进行设置:

<plugin name="cordova-plugin-whitelist" />
<access origin="http://my-server.com" />

etc...

显然禁用苹果的 App Transport Security 是不可能的,因为我没有构建应用程序,只是在 Phonegap 服务器和 Phonegap 应用程序上测试它。

但这可能与 ATS 阻止 Phonegap 应用程序本身对其他域的 ajax 请求有关吗?我想这需要 Phonegap 允许访问所有域,这在应用商店中可能是不允许的!

这是我对正在发生的事情的最佳猜测。有什么想法或解决方法吗?

【问题讨论】:

    标签: javascript ios ajax cordova phonegap


    【解决方案1】:

    新 ios 应用的唯一互联网解决方案是将后端移动到 https...

    【讨论】:

    • 如果我迁移到 https,phonegap 应用程序是否也可以在不需要额外魔法的情况下工作?我应该补充一点,my-server.com 是一个虚拟主机,不确定这是否会改变什么,或者是否仍然需要实际的域和 SSL 证书?
    • 是的。但无论如何,迁移到 https 是个好主意。查看letsencrypt.org - 是的,需要带有ssl 的真实域。它可以以某种方式在本地完成,还没有尝试任何解决方案。它也不适用于没有域的 ip。
    • 这就是我所担心的,一个轻量级的 google 建议使用真实域可能更容易
    猜你喜欢
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 2012-07-23
    • 2012-05-04
    • 2018-01-07
    相关资源
    最近更新 更多