kafka connect rest api“跨域”异常从$.ajax({…})调用

dtcbnfnu  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(778)

我已经安装了融合数据平台的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-length30 它是生成的json数组中可用的字符数 [<string1>, <string2>] .

yhqotfr8

yhqotfr81#

为了得到更完整的答案,在kafka 0.10.0.0和confluent platform 3.0.0中添加了这一点。要允许对kafka connect rest api的跨源请求,请添加:

access.control.allow.origin=* # allows requests from any domain
access.control.allow.methods=GET,OPTIONS,HEAD,POST,PUT,DELETE # Defaults to GET,POST,HEAD

你的工人配置。

8wtpewkr

8wtpewkr2#

在cdpv3.0.0中,通过指定kafka connect属性文件中的设置,已经解决了这个问题。

相关问题