【问题标题】:Cordova Https ajax requests fails or encoded responseCordova Https ajax 请求失败或编码响应
【发布时间】:2014-12-29 11:42:17
【问题描述】:

我们开发了一个应用程序,该应用程序在桌面和移动网络上运行良好,带有威瑞信证书 (https)。我们开发了 iOS 和 android cordova 应用程序,它可以与 http 服务器一起正常工作。对于生产,他们启用了 SSL。由于 ajax 调用响应,iOS 和 android 混合应用程序无法正常工作。我收到以下针对 http 和 https 的响应。客户端是否需要进行任何更改或所有关于 SSL 的更改? SSL解码响应有什么解决方法吗?我们正在使用 IBM 的 websphere 应用服务器。

来自 http 服务器的响应 [{"SALT":"3FzekTIywrmm9jojnfHn11"}]

来自 https 服务器的响应

<html>
  <head>
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    <META HTTP-EQUIV="Expires" CONTENT="-1"></head><body>
    <script type=text/javascript>
     function decode_base64(input){
       var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";
       var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9+/=]/g,"");
       while(i<input.length){
         enc1=keyStr.indexOf(input.charAt(i++));
         enc2=keyStr.indexOf(input.charAt(i++));
         enc3=keyStr.indexOf(input.charAt(i++));
         enc4=keyStr.indexOf(input.charAt(i++));
         chr1=(enc1<<2)|(enc2>>4);
         chr2=((enc2&15)<<4)|(enc3>>2);
         chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){
         output=output+String.fromCharCode(chr2)
       }
       if(enc4!=64){
         output=output+String.fromCharCode(chr3)}}return output;
       }      
       document.write(decode_base64("PHNjcmlwdCB0eXBlPXRleHQvamF2YXNjcmlwdD52YXIgdG9fZGVjPWRlY29kZV9iYXNlNjQoImNtUjFWV2hzWkc1MGRTbG5kRzlpZFdodWJ5RXBLSG9oWlc1aWRHeGtiM1V2Ylc1aVlIVm9ibTg4SXk0eGUzRnZMaU02SVh3dElUQXhNVEVvIik7IGRlY19yZXM9IiI7IHZhciB4b3Jfa2V5PTE7IGZvcihpPTA7aTw2MDtpKyspeyBkZWNfcmVzKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHhvcl9rZXledG9fZGVjLmNoYXJDb2RlQXQoaSkpO30gZXZhbChkZWNfcmVzKTs8L3NjcmlwdD4="));
    </script>
  </body>
</html>

【问题讨论】:

    标签: ajax cordova ssl https websphere


    【解决方案1】:

    返回错误消息的方式很奇怪,但你的 HTTPS 服务器告诉你

    i18n-values: Missing value for "primaryParagraph"
    

    你可以看到

    1. 将 HTML 复制粘贴到文本编辑器,
    2. 将其命名为 foo.html,
    3. 在浏览器中打开,
    4. 打开开发者工具并查看控制台显示的内容。

    回答您的问题:从客户端编码的角度来看,HTTP 和 HTTPS 调用之间并没有太大区别。浏览器往往会非常有效地隐藏这些内容,尽管在 HTTPS 调用等方面的性能通常较弱。

    【讨论】:

    • 感谢 Sanfor,我没有收到您所说的任何日志,我尝试为“Content-Language”添加请求标头 - “es”仍然作为响应。服务器端是否有任何解决方法来获得正确的 json 响应或客户端使其工作?
    • @Senthil:因为这是来自您的服务器的答案并且它适用于 HTTP,所以我会查看服务器,看看那里的日志中是否存在任何错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2022-08-19
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    相关资源
    最近更新 更多