情况:
我正在开发一个从API接收数据的Ionic应用程序。
之前,API位于 http:// 地址,一切正常。
然后我们将API移至 https:// ,它不再起作用了。 或者,它仍然可以在浏览器中访问它,但不能在手机(或模拟器)中访问它。
我不确定可能是什么问题。在控制台日志中,我看到请求的状态为0.
它可能与白名单,标题或CORS有关。我尝试了几种方法,但都没有。
白名单:
在config.xml之前有这个白名单:
<allow-navigation href="http://*/*" />
我试图以多种方式修改它,但这并没有解决问题。 例如,我尝试过:
<allow-navigation href="https://*/*" />
和
<allow-navigation href="*" />
API请求:
这是API请求的一个示例:
$http.get( 'https://MY_DOMAIN.com/mobile/list_mobile_project/' ,{},{"headers" : {"Content-Type" : "application/x-www-form-urlencoded; charset=UTF-8" }})
.success(function(data, status, headers, config)
{
// code
}).
error(function(data, status, headers, config)
{
console.log('Error with the API list_mobile_project');
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
});
API响应:
这是API响应的一个例子:
public function list_mobile_project()
{
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
// code
echo json_encode( $project_list );
}
问题:
如何让API在HTTPS上运行?
如果是与CORS相关的问题,如何在服务器端启用它?
答案 0 :(得分:2)
当您从Http切换到Https时,问题主要是Hand Shke或证书合规性。请检查您的SSL证书是否在您的信任库中可用,并检查您的Android设备是否支持证书提供商。例如,初始Android平台不支持CA证书。
可能会有以下两个链接可以给你一些想法。
http://nelenkov.blogspot.in/2011/12/using-custom-certificate-trust-store-on.html
http://www.codeproject.com/Articles/826045/Android-security-Implementation-of-Self-signed-SSL
答案 1 :(得分:0)
我认为从设备CORS不是问题。例如,见this。从您的浏览器进行测试将创建一个CORS问题。 我认为问题是你的白名单。 在config.xml中添加(来源:this):
<access origin="https://yourapi.com" />
这只是猜测!
答案 2 :(得分:0)
尝试:
ionic plugin add cordova-plugin-whitelist
https://forum.ionicframework.com/t/update-to-cordova-5-0-0-make-http-call-error/22703
使用cordova 5.0.0,他们重新引入了白名单插件.. 你需要添加这个插件并允许你的后端网址。
答案 3 :(得分:0)
$http.get('/someUrl').success(successCallback);
如果您的应用是通过HTTPS提供的,那么您正在进行的任何通话都是针对同一主机/端口等,也是通过HTTPS进行的。
如果您为请求使用完整的URI,例如$http.get('http://foobar.com/somePath')
然后您必须更改您的URI才能使用https
答案 4 :(得分:0)
如果您在设备内运行APK文件的Android上看到此错误,则该错误与CORS无关。当您开发本机或混合/本机移动应用程序时,除非它们是渐进式Web应用程序,否则CORS不是问题。在开发针对设备的移动应用程序时,在开发和进行初始调试时,请使用chrome并禁用CORS。您只需要运行[install-folder] \ chrome.exe --disable-web-security --user-data-dir
答案 5 :(得分:-2)
我也遇到过这种问题。步骤是帮助您解决问题
问题是,检查是否正确添加了插入您的离子应用程序。
我的应用程序问题通过添加插件
得以解决我认为,这些步骤对您有帮助。