2017-06-02 94 views
1

我正在使用一個Angular 1.6.3應用程序,該應用程序使用elasticsearch.js庫來查詢在遠程服務器上運行的ElasticSearch 5.4實例。最近,我們的應用程序開始出現問題,當它最初涉及ElasticSearch數據時,會收到幾個Response for preflight is invalid (redirect)錯誤。目前這個問題只發生在Chrome:針對預檢的響應對AngularJS和ElasticSearch無效(重定向)

Response for preflight is invalid (redirect)

在開發工具的要求截圖:HTTP request in network tab

這個錯誤似乎是隨機發生的,並且當用戶訪問Chrome瀏覽器的應用程序不會發生隱身模式或Firefox等其他瀏覽器。

經過一番研究,我發現這個OPTIONS請求是瀏覽器發出的問題,請求服務器發送包含我想要查詢ElasticSearch的實際POST是否合適。預檢正在發生的原因是因爲我正在嘗試使用application/json作爲Content-Type標題進行POST,該標題不是Content-Type標題的「標準」值之一。

我的問題是 - 我該如何解決?我在elasticsearch.yml改變了CORS設置無濟於事:

http.cors.enabled: true 
http.cors.allow-origin: "*" 
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE 
http.cors.allow-headers: "X-Requested-With, X-Auth-Token, Content-Type, Content-Length, Authorization" 

我也試圖改變elasticsearch.js Content-Type標題爲每個ElasticSearch請求,但每個請求繼續發送application/json,如設置不聽我進入:

var client = elasticsearch.Client({ 
    hosts: [{ 
    host: 'es-proxy.company.net', 
    port: 80, 
    headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
    } 
    }] 
}); 

OPTION請求從Chrome中DevTool網內部活動頁面失敗的截圖: enter image description here

任何幫助,將不勝感激。謝謝。

回答

1

問題的原因可以在OPTION請求底部附近的Chrome DevTool網絡內部事件頁面中看到,它顯示CHROME_EXTENSION_REDIRECTED_REQUEST。 Chrome擴展程序隨機將我的請求重定向到ElasticSearch,從而有效地取消了它們。由於它是由我的公司(通過企業策略)安裝的Chrome擴展程序,因此無法移除,因此我可以將ElasticSearch主機添加到擴展程序的白名單中。

相關問題