2017-08-14 53 views
0

我有一个后端执行BASIC身份验证。我传递的卷曲编码的用户名/密码如下授权标题 - Javascript Vuejs

curl -D- -X GET -H "Authorization: Basic cmFtcmFtOnBhc3N3b3Jk" -H "Content-Type: application/json" "http://localhost:9000/users/login" 

,它工作正常

而在使用VUE资源vue.js我试图用做同样的

var options = { 
     url: 'http://localhost:9000/users/login', 
     method: 'GET', 
     headers: 
     { 
      'Authorization': 'Basic cmFtcmFtOnBhc3N3b3Jk' 
     } 
    } 
    context.$http(options).then(res => { 
     if (res.ok) { 
     cb({ authenticated: true }) 
     } else { 
     cb({ authenticated: false }) 
     } 
    }) 

但它没有得到认证。从devtools得到的请求信息如下

Accept:*/* 
Accept-Encoding:gzip, deflate, br 
Accept-Language:en-GB,en;q=0.8,fr;q=0.6,en-US;q=0.4 
Access-Control-Request-Headers:authorization 
Access-Control-Request-Method:GET 
Connection:keep-alive 
DNT:1 
Host:localhost:9000 
Origin:http://evil.com/ 
Referer:http://localhost:8080/Login 

我没有看到授权信息被传递给服务器。难道我做错了什么 ?注意:服务器和客户端都在本地主机上。

感谢

回答

0

vue-resourceretired,所以我不认为你应该使用它了。相反,你如何使用fetch而不是建议,看看它是否工作:

fetch('http://localhost:9000/users/login', { 
    method: 'POST', 
    headers: new Headers({ 
     'Authorization: Basic cmFtcmFtOnBhc3N3b3Jk', 
     'Content-Type': 'application/json' 
    }), 
    body: JSON.stringify(req.body.payload) 
})