我已经安装了融合数据平台的v2.0.1,并启动和运行了kafka connect服务。在尝试从backbone.js框架发出rest调用时,我得到cors异常(跨域异常)。我不依赖 Backbone.js 同步api,因为我对kafka connect使用普通jqueryajax调用($.ajax)。这样的电话:
$.ajax({
type: 'GET',
url: 'http://<host>:8083/connectors',
crossDomain:true,
dataType: 'json',
async: true,
success: function(data, status, xhr){
Messenger.trigger('...', data);
},
error: function (xhr, ajaxOptions, thrownError) {
Messenger.trigger('...', thrownError);
}
})
导致cors异常。我尝试了datatype:'jsonp',然后得到了一个200响应代码,但是仍然调用了error函数。该应用程序是一个javascript应用程序,在浏览器中100%运行,由nginxweb服务器提供服务。所有的东西都在同一台机器上运行-唯一让调用“跨域”的部分是端口号:connect8083和app端口80。
注意:如果我发布get from,比如说,iceweasel,格式为'http://localhost:8083'我得到一个“正确”的响应,并且使用“完全相同的”ajax会得到以下响应:
http://localhost:8083/connectors
GET /connectors HTTP/1.1
Host: localhost:8083
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0 Iceweasel/38.2.1
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-GB,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://localhost/index.htm
Origin: http://localhost
Connection: keep-alive
HTTP/1.1 200 OK
Date: Wed, 01 Jun 2016 08:38:36 GMT
Content-Type: application/json
Content-Length: 30
Server: Jetty(9.2.12.v20150709)
但是,错误函数不是触发成功的。有趣的是 Content-length
是 30
它是生成的json数组中可用的字符数 [<string1>, <string2>]
.
2条答案
按热度按时间yhqotfr81#
为了得到更完整的答案,在kafka 0.10.0.0和confluent platform 3.0.0中添加了这一点。要允许对kafka connect rest api的跨源请求,请添加:
你的工人配置。
8wtpewkr2#
在cdpv3.0.0中,通过指定kafka connect属性文件中的设置,已经解决了这个问题。