使用intel.xdk进行https调用

时间:2015-02-11 07:36:25

标签: rest ssl cors intel-xdk

我们正在尝试调用使用SSL证书的.NET REST API。我们已将服务器标题设置为Allow All(使用CORS),当我们尝试通过带有以下代码的Web浏览器访问它时它很有效,但是当我们尝试使用Intel XDK创建的应用程序时,我们得到的都是错误(如下图所示:

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证书结合使用。

1 个答案:

答案 0 :(得分: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);
});