2017-01-12 46 views
0

我想在使用ELK容器的Kibana儀表板上發佈一些JSON數據,但我得到的錯誤XMLHttpRequest無法加載myUrl。請求的資源上沒有「Access-Control-Allow-Origin」標題。因此不允許訪問原產地'http://localhost'。儘管有錯誤,但它將Kibana儀表板上的數據作爲整個json在一個字符串中顯示爲「message = test」,其中它只能是「test」。
即使我的misparsed json數據正確發送並顯示在Kibana上,它也始終給我「失敗」警報。ExtJS post JSON數據訪問控制允許來源錯誤

我的功能是

sendLog: function() 
    { 

     Ext.Ajax.request({ 
      url: url, 
      cors: false, 
      useDefaultXhrHeader : false, 
      method: 'POST', 
      params: 
      {  
       "message": "test" 
      }, 
      success: function() { 
       alert('success'); 
      }, 
      failure: function() { 
       alert('failure'); 
      } 
     }); 
    } 

回答

0
  • 正如你已經發現,Ajax請求的工作原理:該服務器獲得請求並處理它。
  • 每個請求都由服務器(Kibana)的響應回答。
  • 您的瀏覽器不允許您的應用程序訪問該響應,因爲服務器未以適當的值發回「Access-Control-Allow-Origin」標題。這樣,瀏覽器可以確保惡意JavaScript無法從整個網絡中的任意服務器加載任意數據,除非服務器明確允許它。這就是所謂的CORS,你會在網上找到關於這個話題的大量資源。

例如,進一步閱讀:"No 'Access-Control-Allow-Origin' header is present on the requested resource"

你將不得不檢查是否以及如何告訴Kibana發回自定義Http頭部響應。

相關問題