2016-06-01 81 views
0

我已安裝Confluent Data Platform的v2.0.1並使Kafka Connect服務啓動並運行。當試圖從Backbone.js框架發出REST調用時,我得到CORS異常(跨域例外)。我不依賴Backbone sync API,因爲我使用普通的jQuery AJAX調用($ .ajax)來對付Kafka Connect。像這樣的呼叫:

$.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響應代碼,但是錯誤函數仍然被調用。該應用程序是一個在瀏覽器中運行100%的Javascript應用程序,由nginx web-server提供服務。所有東西都在同一臺機器上運行 - 唯一允許調用「跨域」的部分是端口號:連接8083和應用端口80.

注意:如果我從Iceweasel發出GET形式爲「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>]中可用的字符數。

回答

0

這已在CDP v3.0.0中解決,指定了Kafka Connect屬性文件中的設置。

1

要獲得更完整的答案,請在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 

添加到您的工作人員配置。