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) },
});
第一次请求
HTTP500:服务器错误 - 服务器遇到意外情况,导致服务器无法完成请求。 (XHR):GET - https://.../api/Auth?AspxAutoDetectCookieSupport=1
两次,因为$ http + $ .ajax
第二次和下一次请求 - 返回正确的响应(也是两次)
所有请求
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”访问。
问题
如何使用相同代码的cordova和chrome中的https工作?
如何在cordova中跳过第一次请求并作为第二次使用?
答案 0 :(得分:0)
从Cordova 5开始,您需要使用Cordova Whitelist Plugin。
安装该插件后,您需要修改项目的config.xml
文件。对于您的网络请求,您需要添加类似于以下内容的<access>
标记:
<access origin="http://*.google.com" />
您还需要为您的应用配置Content Security Policy。我建议您参考Cordova Whitelist Plugin documentation获取指导。