Cordova(Phonegap)https工作和调试

时间:2016-05-07 07:46:17

标签: javascript angularjs ajax cordova google-chrome

https网站有api。

需要来自cordova(angularjs)的工作与它的https api。

此外,我想在webbrowser(chrome)中使用debug angularjs app,因为它非常快(与重建和部署相比)。

简单代码

$http({
    method: 'POST',
    crossDomain: true,
    xhrFields: { withCredentials: false },
    url: 'https://.../api/Auth',
    data: { email: user, password: password }
    }).
    then(function (response) {
        console.log("0", response);
    }, function (response) {
        console.log("1", response);
    });

$.ajax({
    type: "POST",
    url: 'https://.../api/Auth',
    xhrFields: {
        withCredentials: true
    },
    crossDomain: true,
    data: { email: user, password: password },
    success: function (response) { console.log("2", response) },
});
  1. 有关cordova调试的结果(Visual Studio,Windows-x64)
  2. 第一次请求

    HTTP500:服务器错误 - 服务器遇到意外情况,导致服务器无法完成请求。 (XHR):GET - https://.../api/Auth?AspxAutoDetectCookieSupport=1

    两次,因为$ http + $ .ajax

    第二次和下一次请求 - 返回正确的响应(也是两次)

    1. Chrome中的结果
    2. 所有请求

      a)$ http使用 OPTION 方法而非POST

      b)$ http错误 XMLHttpRequest无法加载https://.../api/Auth。预检的响应无效(重定向)

      c)$ .ajax使用正确的 POST

      d)$ .ajax错误 XMLHttpRequest无法加载https://.../api/Auth。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://local1.test”访问。

      问题

      1. 如何使用相同代码的cordova和chrome中的https工作?

      2. 如何在cordova中跳过第一次请求并作为第二次使用?

1 个答案:

答案 0 :(得分:0)

从Cordova 5开始,您需要使用Cordova Whitelist Plugin

安装该插件后,您需要修改项目的config.xml文件。对于您的网络请求,您需要添加类似于以下内容的<access>标记:

<access origin="http://*.google.com" />

您还需要为您的应用配置Content Security Policy。我建议您参考Cordova Whitelist Plugin documentation获取指导。