我已安裝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-length
是30
,它是生成的JSON數組[<string1>, <string2>]
中可用的字符數。