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代理无法按预期工作?
答案 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
});