【发布时间】:2016-06-19 12:21:10
【问题描述】:
当我运行 AngularJS 登录后端时,我遇到了一个内部问题。我可以通过异常处理来解决这个问题,但真正的问题仍然存在。我正在尝试使用基本身份验证方法,因此我在我的客户端代码中调用它:
function Login(username, password) {
var authdata = CreateLoginHeader(username, password);
var config = {
withCredentials: true,
headers: { 'Authorization': authdata, 'Content-Type', 'application/json' }
};
$http.post('http://brain-ratmap.rhcloud.com/api/v1/brain/study/login', config).then(SuccessLogin, ErrorLogin);
}
function CreateLoginHeader(username, password) {
var authdata = btoa(username + ':' + password);
return 'Basic uIg' + authdata;
}
当我触发这个时,我在 JS 中得到这个错误:
XMLHttpRequest 无法加载 http://XXXX/api/v1/login。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://YYYY' 不允许访问。响应的 HTTP 状态代码为 500。
就像我说的,我知道如果我会处理我的异常并且仍然会返回响应,那么这个 POST 方法应该可以工作。但是我要问的是,我的基本身份验证为什么不起作用 - 当我在服务器端收到请求时,标头中的 Authenticate 值不包含“基本”以外的任何内容。
这也是我对所有标头值的日志输出[键;值的大小;1 个索引上的值]:
2016-03-05 13:52:50,610 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:接受 2016-03-05 13:52:50,612 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,612 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)应用程序/json,文本/纯文本,/ 2016-03-05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:Accept-Encoding 2016-03-05 13:52:50,612 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,613 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)gzip,放气 2016-03-05 13:52:50,615 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:Accept-Language 2016-03-05 13:52:50,615 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,616 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)en-US,en;q=0.8
2016-03-05 13:52:50,616 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:授权
2016-03-05 13:52:50,617 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标头值为大小 1
2016-03-05 13:52:50,618 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题值包含在第一个索引基本
2016-03-05 13:52:50,620 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:连接 2016-03-05 13:52:50,621 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,629 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)保持活动 2016-03-05 13:52:50,630 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:内容长度 2016-03-05 13:52:50,630 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,630 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)90 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:Content-Type 2016-03-05 13:52:50,630 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,631 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)应用程序/json;charset=UTF-8 2016-03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:主机 2016-03-05 13:52:50,631 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,631 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)brain-ratmap.rhcloud.com 2016-03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:Origin 2016-03-05 13:52:50,631 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,631 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)http://rat-investigation.rhcloud.com 2016-03-05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:Referer 2016-03-05 13:52:50,632 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,632 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)http://rat-investigation.rhcloud.com/ 2016-03-05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:用户代理 2016-03-05 13:52:50,632 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)Mozilla/5.0(Windows NT 10.0;WOW64)AppleWebKit/537.36(KHTML,像 Gecko ) Chrome/48.0.2564.116 Safari/537.36 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Client-IP 2016-03-05 13:52:50,633 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,633 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)70.75.185.14 2016-03-05 13:52:50,633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Forwarded-For 2016-03-05 13:52:50,633 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,634 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)70.75.185.14 2016-03-05 13:52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Forwarded-Host 2016-03-05 13:52:50,634 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,634 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)brain-ratmap.rhcloud.com 2016-03-05 13:52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Forwarded-Port 2016-03-05 13:52:50,636 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,636 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)80 2016-03-05 13:52:50,636 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Forwarded-Proto 2016-03-05 13:52:50,637 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,637 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)http 2016-03-05 13:52:50,637 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Forwarded-Server 2016-03-05 13:52:50,637 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,638 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)brain-ratmap.rhcloud.com 2016-03-05 13:52:50,638 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)标题键是:X-Request-Start 2016-03-05 13:52:50,638 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)1 2016-03-05 13:52:50,639 信息 [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务 2)t=1457203970487695
【问题讨论】:
-
您需要在服务器上启用 CORS 并以不同于 POST 的方式处理 OPTIONS 预检请求
-
我很确定这不是它。我现在通过捕获它来处理异常,并且由于凭据为空,我返回了 403。如果你是对的,那么我将不得不恢复同样的失败——XMLHttpRequest 无法加载XXXX/api/v1/login。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'YYYY' 不允许访问。响应的 HTTP 状态代码为 500。
-
我使用link 1 和link 2 来实现我的应用程序。这就是为什么我认为问题出在客户端的原因,因为它应该产生相同的结果,但事实并非如此(POST XXXX/login 403 (Forbidden))。
-
No 'Access-Control-Allow-Origin' header is present是 CORS 错误,您的后端也显示 500 服务器错误 -
在 chrome 中打开并打开浏览器开发工具网络。可以看到那里提出的请求。可以准确查看发送/返回的内容、状态、cookie 等。可能是 OPTIONS 预检请求失败