2015-02-11 66 views
1

我們正嘗試撥打使用SSL證書的.NET REST API。我們已經將服務器標題設置爲Allow All(使用CORS),當我們嘗試使用下面的代碼通過Web瀏覽器訪問它時,它非常適用,但是當我們嘗試使用使用Intel XDK創建的應用程序時,在下面的代碼圖片)所示:使用intel.xdk撥打https呼叫

function test1() { 
    var self = this; 

    self.ajax = function (uri, method, data) 
    { 
     alert('sending: ' + data); 
     var request = { 
      url: uri, 
      type: method, 
      contentType: "x-www-form-urlencoded", 
      accepts: "application/json", 
      cache: false, 
      origin: 'localhost', 
      data: data, 
      success: function (result) 
      { 
       console.info("WORKS!"); 
      }, 
      error: function (jqXHR) { 
       console.log("Got a response"); 
       console.log(jqXHR); 
       console.log("ajax error " + jqXHR.status); 
      } 
     }; 
     return $.ajax(request); 
    }; 

    self.ajax(
      'https://localhost:44301/token', 
      'POST', 
      'grant_type=XXX&username=XXX&password=XXX' 
      ) 
      .done(function (data) { 
       alert('got data from auth'); 
       alert(data.access_token); 
      }); 
} 

function test2() 
{ 
    $.ajax({ 
     url: "https://localhost:44301/token", 
     type: "POST", 
     jsonp: "callback", 
     dataType: "jsonp", 
     data: "grant_type=XXX&username=XXX&password=XXX", 
     crossDomain: true, //Don't think this is required really... 
     jsonpCallback: function (data) 
     { 
      console.log("JSON P CALLBACK!"); 
      console.info(data); 
     }, 
     success: function (response) { 
      console.log(response); 
     } 
    }); 
} 

enter image description here enter image description here

在英特爾XDK項目中,我們使用xhr.js文件,這似乎是通用的解決這個問題的每一個地方,但我還沒有看到任何人實際將它與SSL證書結合使用。

+0

服務器是否具有有效的SSL證書? – krisrak 2015-02-11 22:56:12

+0

@krisrak:是的,正如我所說的,這在其他地方效果很好,只是不在Intel.XDK應用程序中。 – Maffelu 2015-02-12 05:54:58

+0

可以嘗試使用此選項在命令行中打開xdk'--ignore-certificate-errors' – krisrak 2015-02-12 18:09:07

回答

1

這個問題似乎是一個簡單的內容編碼問題。添加標題後,將內容編碼設置爲UTF-8它的工作原理如下:

$.ajax({ 
    url: 'https://localhost:44302/api/ping', 
    type: 'POST', 
    beforeSend: function (request) 
    { 
     //This part 
     request.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
    }, 
    dataType: "json", 
    data: JSON.stringify("Hello") 
}) 
.done(function (result) 
{ 
    console.info(result); 
}); 
相關問題