WP8.1 Cordova App 中的 https 请求失败
https request failing in WP8.1 Cordova App
我使用 Sencha Touch 2.4.1 开发了一个应用程序,并使用 Cordova 3.5.0-0.2.7 为 Windows 手机构建。该应用程序向具有有效且受信任的 SSL 证书的服务器发出 https OData 请求,但这些请求在 WP8.1 中失败,状态代码 0 和状态文本为空白。
WP8.1 中的 http 协议和 WP8.0 中的 http/https 也能正常工作。下面是一个带有两个按钮的示例代码——一个调用 HTTP 服务(工作),另一个调用 HTTPS 服务(不工作):
{
xtype: 'button',
text: 'HTTP',
handler: function(b, e){
var storeRef = Ext.getStore('ODataStore');
storeRef.getProxy().setUrl("http://myDomain:80/SAP/Odata_Service");
storeRef.load();
}
},
{
xtype: 'button',
text: 'HTTPS',
handler: function(b, e){
var storeRef = Ext.getStore('ODataStore');
storeRef.getProxy().setUrl("https://myDomain:443/SAP/Odata_Service");
storeRef.load();
}
}
我认为这与 Cordova 代码有关。我看过几个类似问题的帖子,但没有具体的解决方案。
出来的问题很奇怪:
在第一次调用中,Windows Phone 8.1 不允许在 url 中传递带有“API 服务器凭据”的“https”。同时,它允许没有凭据的 https 或有凭据的 http。
解决方法:
我从 https 开始进行了一个虚拟调用,没有凭据,然后是带有凭据的正常 https 调用。成功了!
我使用 Sencha Touch 2.4.1 开发了一个应用程序,并使用 Cordova 3.5.0-0.2.7 为 Windows 手机构建。该应用程序向具有有效且受信任的 SSL 证书的服务器发出 https OData 请求,但这些请求在 WP8.1 中失败,状态代码 0 和状态文本为空白。
WP8.1 中的 http 协议和 WP8.0 中的 http/https 也能正常工作。下面是一个带有两个按钮的示例代码——一个调用 HTTP 服务(工作),另一个调用 HTTPS 服务(不工作):
{
xtype: 'button',
text: 'HTTP',
handler: function(b, e){
var storeRef = Ext.getStore('ODataStore');
storeRef.getProxy().setUrl("http://myDomain:80/SAP/Odata_Service");
storeRef.load();
}
},
{
xtype: 'button',
text: 'HTTPS',
handler: function(b, e){
var storeRef = Ext.getStore('ODataStore');
storeRef.getProxy().setUrl("https://myDomain:443/SAP/Odata_Service");
storeRef.load();
}
}
我认为这与 Cordova 代码有关。我看过几个类似问题的帖子,但没有具体的解决方案。
出来的问题很奇怪:
在第一次调用中,Windows Phone 8.1 不允许在 url 中传递带有“API 服务器凭据”的“https”。同时,它允许没有凭据的 https 或有凭据的 http。
解决方法:
我从 https 开始进行了一个虚拟调用,没有凭据,然后是带有凭据的正常 https 调用。成功了!