2015-11-08 160 views
0

我在安裝了REST API插件的情況下使用OpenFire。OpenFire Rest API 401未經授權的錯誤

我試圖通過AngularJS $ HTTP來獲取聊天室列表與正確的授權頭中的$http.defaults.headers.common屬性設置來電http://localhost:9090/plugins/restapi/v1/chatrooms

當調用時,我收到以下錯誤:

OPTIONS http://localhost:9090/plugins/restapi/v1/chatrooms 401 (Unauthorized)(anonymous function) @ angular.js:10722sendReq @ angular.js:10515serverRequest @ angular.js:10222processQueue @ angular.js:14745(anonymous function) @ angular.js:14761Scope.$eval @ angular.js:15989Scope.$digest @ angular.js:15800(anonymous function) @ angular.js:16028completeOutstandingRequest @ angular.js:5507(anonymous function) @ angular.js:5784 


XMLHttpRequest cannot load http://localhost:9090/plugins/restapi/v1/chatrooms. Response for preflight has invalid HTTP status code 401 

的真正惱人的問題是,當我通過構建郵差同樣的要求,它完美的作品和預期的響應後,但裏面瀏覽器(無論是通過$ http,還是通過控制檯調用window.fetch),我都會收到該錯誤。

據說,OpenFire REST API支持CORS(我甚至檢查插件源代碼),但似乎沒有任何幫助。

回答

0

我建議你比較提琴手請求和瀏覽器請求(標題+正文)。 它應該工作,如果他們是100%相同的。

+0

這似乎不可能。成功的預檢GET請求不會顯示爲對提琴手的OPTIONS請求。實際的OPTIONS請求失敗了,所以Fiddler在失敗時纔會看到它。 – SirDemon

1

我是REST API插件的開發人員。你說得對,REST API支持CORS,並且可以直接從角度js調用它。上述問題(預檢請求)將由您的瀏覽器完成。我只是解決了OPTION請求不需要授權的問題。 簽出REST API版本:1.1.7

+1

我沒有直接創建選項呼叫。這是由瀏覽器創建的,我和角都不能控制它。它的創建是因爲它有一個授權標題。正如我所說的,它完全可以從郵差,但不是從瀏覽器。 – SirDemon

+0

你能檢查你的插件代碼嗎?我相信你的代碼即使在OPTIONS請求中也檢查身份驗證,這是無法完成的(無法控制它,它是由瀏覽器自動生成的)。您應該免除認證中的OPTIONS請求。 – SirDemon

+1

是的,我會看看它,並修復它。 –

相關問題