假https请求失败服务器

问题描述:

当我运行我的AngularJS登录到我的后端时,出现内部问题。我可以用异常处理来解决这个问题,但真正的问题仍然存在。我想使用基本身份验证方法,因此,我呼吁这在我的客户端代码:假https请求失败服务器

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”标题。因此不允许访问原产地'http://YYYY'。响应有HTTP状态代码500.

而且就像我说的,我知道如果我会处理我的异常,并仍然会返回一个响应,那么这种POST方法应该工作。但是我所要求的是,我的基本认证不起作用 - 当我在服务器端获得我的请求时,标头中的Authenticate值不包含任何其他的“Basic”。

这里也是我的所有标头值的日志输出[密钥;值的大小;值1个索引]:

2016年3月5日13:52:50610 INFO [brain.ratmap.rhcloud.com .web.service.StudyManagerService](默认任务-2)标题键是:Accept 2016-03-05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2 )1 2016-03-05 13:52:50,612 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)application/json,text/plain,/ 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 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)1 2016-03-05 13:52:50,613 INFO [brain.ratmap .rhcloud.com.web.service.StudyManagerService](默认任务-2)gzip,deflate 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 INFO [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](默认ta SK-2)标题密钥是:授权

2016年3月5日13:52:50617 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)头值是尺寸1

2016年3月5日13:52:50618 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)头值包含关于第一索引基本

2016-03-05 13:52:50,620信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题键是:连接 2016-03-05 13 :52:50,621 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)1 2016-03-05 13:52:50,629 INFO [brain.ratmap.rhcloud.com.web。 service.StudyManagerService](默认任务-2)Keep-Alive 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题密钥为:内容长度 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service。StudyManagerService](默认任务-2)1 2016-03-05 13:52:50,630 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)90 2016-03-05 13 :52:50,630信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题密钥是:Content-Type 2016-03-05 13:52:50,630 INFO [brain.ratmap。 rhcloud.com.web.service.StudyManagerService](默认任务2)1 2016-03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)应用/ JSON;字符集= UTF-8 2016年3月5日13:52:50631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题密钥是:主机 2016- 03-05 13:52:50,631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)1 2016-03-05 13:52:50, 631 INFO [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 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2 )1 2016年3月5日13:52:50631 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)http://rat-investigation.rhcloud.com 2016年3月5日13:52:50632 INFO [脑.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题密钥是:Referer 2016-03-05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService ](默认任务2)1 2016-03-05 13:52:50,632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认吨任务-2)http://rat-investigation.rhcloud.com/ 2016年3月5日13:52:50632 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题密钥是:用户代理 2016-03 -05 13:52:50,632 INFO [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)铬/ 48.0.2564.116 Safari浏览器/ 537.36 2016年3月5日13:52:50633 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务为2)标题键是:X-Client-IP 2016-03-05 13:52:50,633 INFO [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)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 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService] (默认任务2)1 2016-03-05 13:52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)70.75.185.14 2016-03-05 13:52:50,634信息[brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)标题密钥为:X-Forwarded-Host 2016-03-05 13: 52:50,634 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)1 2016-03-05 13:52:50,634 INFO [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)Header关键是:X-Forwarded-Port 2016-03-05 13:52:50,636 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2)1 2016-03-05 13: 52:50,636 INFO [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 INFO [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信息[ brain.ratmap.rhcloud.com.web.service。StudyManagerService](默认任务2)标题密钥为:X-Forwarded-Server 2016-03-05 13:52:50,637 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2) 1 2016-03-05 13:52:50,638 INFO [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 INFO [brain.ratmap。 rhcloud.com.web.service.StudyManagerService](默认任务2)1 2016-03-05 13:52:50,639 INFO [brain.ratmap.rhcloud.com.web.service.StudyManagerService](默认任务-2) t = 1457203970487695

+1

您需要在服务器上启用CORS并处理OPTIONS预检请求与POST不同 – charlietfl

+0

我非常确定这不是它。我现在通过捕捉异常来处理异常,并且由于空凭证而抛出了403回。如果情况确实如此,那么我将不得不重新获得相同的失败 - XMLHttpRequest无法加载http:// XXXX/api/v1/login。请求的资源上没有“Access-Control-Allow-Origin”标题。原因'http:// YYYY'因此不被允许访问。该响应的HTTP状态码为500. –

+0

我使用了[链接1](http://www.developerscrappad.com/1781/java/java-ee/rest-jax-rs/java-ee-7-jax-rs- 2-0-cors-on-rest-how-to-make-rest-apis-accessible-from-a-different-domain /)和[link 2](http://blog.dejavu.sk/2013/11/19/registering-resources-and-providers-in-jersey-2 /)来实施我的申请。这就是为什么我认为问题在客户端,因为它应该导致相同的结果,但它不会(POST http:// XXXX/login 403(Forbidden))。 –

我发现了问题,正如我怀疑的那样,问题是客户端而不是服务器。我没有正确使用$ http.post方法。我将不得不通过调用$ http.post(url,data,[config])在文档中使用它 - 该配置包含我需要的所有标题。但因为我没有设法调用这样的函数并传入配置文件(我使用了Google搜索功能,但是我没有找到让数据在没有错误的情况下空白的方法)。这就是为什么我刚才设置的“授权”头所有的HTTP调用:

var authdata = CreateLoginHeader(username, password); 
     $http.defaults.headers.common.Authorization = authdata; 
     $http.post('http://brain-ratmap.rhcloud.com/api/v1/brain/study/login').then(SuccessLogin, ErrorLogin); 

至少这让我可以发送POST请求,我在响应回来我的授权令牌。

我认为我的web服务的另一个原因工作是,因为登录方法被调用并执行。随着我的日志,我可以肯定地说,我的登录内的代码正在处理。

这里是我从开发人员工具全XHR:

请求URL:http://XXXX/login 请求方法:POST 状态代码:403禁止 远程地址:XX.XX.XX.XX:80

响应头

  1. 访问控制允许的凭据:真
  2. 访问控制允许标题:来源,内容类型,接受,授权,auth_token
  3. 访问控制允许方法:GET,POST,DELETE,PUT
  4. Access-Control-Allow-Origin:*
  5. 连接:保持活动
  6. 的Content-Length:65
  7. 内容类型:应用程序/ JSON
  8. 日期:孙老师,2016年3月6日〇时38分31秒GMT
  9. 保持活动:超时= 15,最大= 99
  10. 服务器:WildFl Y/9
  11. X供电-通过:暗流/ 1

请求头

  1. 接受:应用/ JSON,文本/无格式,/
  2. 接受编码:gzip,deflate
  3. Accept-Language:zh-cn,en; q = 0.8
  4. Authoriz通货膨胀:基本
  5. 连接:保持活着
  6. 的Content-Length:130
  7. 内容类型:应用/ JSON;字符集= UTF-8
  8. 主机:XXXX.com
  9. 产地:http://caller-location
  10. Referer:http://caller-location
  11. User-Agent:Mozilla/5.0(Windows NT 10。0; WOW64)为AppleWebKit/537.36(KHTML,例如Gecko)Chrome浏览器/ Safari浏览器48.0.2564.116/537.36

我可以看到,授权头值只包含 “基本”。这就是我在后端没有获得任何更多的原因。并且在附注中,我知道拥有Access-Control-Allow-Origin:*并不是一个好习惯,但是为了测试目的,它没有问题。后来我会改变它。从我的调查中,我看到允许的方法不必包含OPTIONS,您只需要捕获它并返回2XX响应,我正在这样做。我在this教程中描述了我的后端。

我之前在预检时遇到了问题,但是我通过这样做来解决问题here