【问题标题】:Client side(Jquery&Angular) can't send request with x-access-token headers客户端(Jquery&Angular)无法发送带有 x-access-token 标头的请求
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多