HTTP POST请求转换为GET请求

时间:2016-05-23 08:55:46

标签: jquery web-services fiware fiware-wirecloud

WireCloud代理究竟是如何工作的?我们通过WireCloud代理使用以下代码进行请求:

MashupPlatform.http.makeRequest(url, {
        method: 'POST',
        forceProxy: true,
        onSuccess: function (response) {
            success(response);
        },
        onFailure: function (response) {
            error(response);
        },
        onComplete: function () {
            complete();
        }
    });

浏览器网络分析显示POST请求被发送到https://example.com/cdp/https/rest.example.com/path/to/service。我们通过url调用的web服务会记录它收到GET请求。

由tomcat托管的休息服务的访问日志显示:

192.168.60.221 - - [26/May/2016:10:38:31 +0200] "GET /path/to/service HTTP/1.1" 405 1013
192.168.60.221 - - [26/May/2016:10:38:42 +0200] "POST /path/to/service HTTP/1.1" 204 -

第一个调用是通过上面列出的MashupPlatform.http.makeRequest调用完成的,第二个调用是使用jQuery完成的,如下所示:

$.ajax({
        type: "POST",
        url: url,
        data: null,
        success: success
    });

当我们在web服务中设置CORS头时,这可以很好地完成。

那么可能是因为WireClouds代理无法按预期工作?

1 个答案:

答案 0 :(得分:1)

有许多小部件和运营商使用MashupPlatform API和WireCloud的CORS代理,我们从未看到它将POST请求转换为GET个请求。无论如何,使用jQuery很好;-)。此外,您还可以使用它来使用buildProxyURL method对不支持CORS标头的服务执行请求。 E.g:

url = MashupPlatform.http.buildProxyURL('https://api.example.com/api/endpoing');
$.ajax({
    method: "POST",
    url: url,
    data: null,
    success: success
});