angular的$ http.get()收到状态-1,而它应该收到状态401

时间:2016-12-09 09:23:40

标签: angularjs http oauth-2.0 cors http-status-code-401

我有一个奇怪的问题......我们有一个受oauth保护的服务器,当它返回401(例如令牌已过期)时,angular接收状态-1。但是,当使用有效令牌时,一切都很好。

选项请求:

Request URL: [server].../forms/[id]
Request Method:OPTIONS
Status Code:200 
Remote Address:52.212.120.132:80

Access-Control-Allow-Headers:authorization
Access-Control-Allow-Methods:GET,OPTIONS,DELETE,PUT,HEAD,POST
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1800
Allow:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
Cache-Control:no-cache, no-store, max-age=0, must-revalidate

真正的电话:

Request URL: [server].../forms/[id]
Request Method:GET
Status Code:401 
Remote Address:52.212.120.132:80


Content-Type:application/json;charset=UTF-8
Server:nginx/1.11.6
Transfer-Encoding:chunked
WWW-Authenticate:Bearer realm="oauth2-resource", error="invalid_token", error_description="Token expired"

但是在角度中,错误回调中收到状态-1。

我在控制台中遇到了CORS问题:

XMLHttpRequest cannot load [server].../forms/[id]. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. The response had HTTP status code 401.

但是,正如您所看到的,OPTIONS请求中存在“Access-Control-Allow-Origin”标头,实际呼叫已完成。

有人有什么想法吗?欢迎任何建议或指示!

0 个答案:

没有答案