2015-02-11 101 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); 
});