【发布时间】:2015-07-10 09:32:42
【问题描述】:
我跟着 this article 在 Node.js 中构建了一个带有令牌的 web api:
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if (token) {console.log("passed!");}
else
{console.log("No token provided.");}
我用 Postman 测试过,用http://localhost:3000?token=eyJ0eXAiO 试过 一切正常,但在客户端调用 API 时:
app.controller('myCtrl', function($scope, $http, $cookies) {
var apikey=$cookies.get('apikey');
$http({url: 'http://localhost:3000/', method: 'GET', headers: {'x-access-token': apikey}})
.success(function (data) {
console.log(data);
}).error(function(error){console.log(error);});
和 jquery 调用:
jQuery.ajax( {
url: 'http://localhost:3000/',
type: 'GET',
beforeSend : function( xhr ) {
xhr.setRequestHeader( 'x-access-token', 'eyJ0eXAi');
},
success: function( response ) {
console.log(response);
},
error : function(error) {
console.log(error);
}
} );
每个 Angular 或 jquery 都不起作用并返回“未提供令牌”。
我错过了什么?请帮帮我。
这是来自 req.headers 的标题 Angular.JS
{ 主机:'本地主机:3000', 连接:'保持活动', “缓存控制”:“最大年龄=0”, '访问控制请求方法':'GET', 来源:'本地主机:3001', '用户代理': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, 像壁虎)Chrome/43.0.2357.132 Safari/537.36', 'access-control-request-headers': '接受,最大年龄,x-access-token', 接受:'/', 引用者:'localhost:3001', '接受编码':'gzip,放气,sdch', '接受语言': 'en-CA,en;q=0.8,en-US;q=0.6,zh-CN;q=0.4,zh;q=0.2,zh-TW;q=0。 2' } 未提供令牌。
邮递员
{ 主机:'本地主机:3000', 连接:'保持活动', csp:“活跃”, '缓存控制':'无缓存', 'x-access-token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoibGF3cmVuY2 UiLCJwYXNzd29yZCI6InNreTIwMDAiLCJhZG1pbiI6dHJ1ZSwiaWF0IjoxNDM2Mzc0NTYzLCJleHAiOj E0MzY0NjA5NjN9.OycP6xdUlG3vLyZHcj4rLjyYKE1GnlWc3h-f0r1ZpZ0', '用户代理': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, 像壁虎)Chrome/43.0.2357.132 Safari/537.36', '邮递员令牌':'ab2a26e3-f6a1-09e0-c21a-85e3cef0aff5', 接受:'/', '接受编码':'gzip,放气,sdch', '接受语言': 'en-CA,en;q=0.8,en-US;q=0.6,zh-CN;q=0.4,zh;q=0.2,zh-TW;q=0。 2' } 通过了!
【问题讨论】:
-
console.log(req.headers),并使用您的浏览器工具检查它们是否首先被发送。 -
x-access-token 不在标头中
-
在 node.js 代码中的服务器端。
-
然后在客户端检查。
-
将结果放在问题的底部。
标签: javascript jquery angularjs node.js express