客户端(Jquery& Angular)无法使用x-access-token标头

时间:2015-07-09 14:17:57

标签: javascript jquery angularjs node.js express

我跟着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

  

{host:' localhost:3000',     连接:'保持活力',     '缓存控制':' max-age = 0',     '访问控制请求方法':' GET',     来源:' localhost:3001',     '用户代理':' Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,   像Gecko)Chrome / 43.0.2357.132 Safari / 537.36',     ' access-control-request-headers':' accept,max-age,x-access-token',     接受:' / ',     referer:' localhost:3001',     '接受编码':' gzip,deflate,sdch',     ' accept-language':' 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' }   没有提供令牌。

邮差

  

{host:' localhost:3000',     连接:'保持活力',     csp:'活跃',     '缓存控制':' no-cache',     ' x-access-token' eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYW1lIjoibGF3cmVuY2   UiLCJwYXNzd29yZCI6InNreTIwMDAiLCJhZG1pbiI6dHJ1ZSwiaWF0IjoxNDM2Mzc0NTYzLCJleHAiOj   E0MzY0NjA5NjN9.OycP6xdUlG3vLyZHcj4rLjyYKE1GnlWc3h-f0r1ZpZ0&#39 ;,     '用户代理':' Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,   像Gecko)Chrome / 43.0.2357.132 Safari / 537.36',     ' postman-token'' ab2a26e3-f6a1-09e0-c21a-85e3cef0aff5',     接受:' / ',     '接受编码':' gzip,deflate,sdch',     ' accept-language':' 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' }   通过!

1 个答案:

答案 0 :(得分:0)

原来这是Chrome问题,必须使用--disable-web-security运行Chrome,然后标头请求才有效。

CORS, Cordova, AngularJs $http and file:// confusion