2015-11-08 104 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

是的,我会看看它,并修复它。 –

相关问题