响应标头中缺少 jwt 授权令牌

Posted

技术标签:

【中文标题】响应标头中缺少 jwt 授权令牌【英文标题】:jwt authorization token missing from response header 【发布时间】:2016-03-08 03:38:31 【问题描述】:

我正在尝试使用 JWT 身份验证使用 Hapi 设置一个简单的 Angularjs 应用程序。

我用 jwt 令牌链接向新注册的用户发送一封电子邮件,以验证该电子邮件是否存在。链接如下所示:

http://127.0.0.1:3000/verifyEmail/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyTmFtZSI6InJpY2tAaWNvZGU0dS5ubCIsInNjb3BlIjpbIkN1c3RvbWVyIl0sImZpcnN0TmFtZSI6IlJpY2siLCJsYXN0TmFtZSI6IkdvbW1lcnMiLCJpYXQiOjE0NDkxNDc5MzR9.6lWxcsSIC7DgAiGC0hcp7bdAhyl40Nbcqid3VgVtM6c

这就是我生成令牌的方式:

handler: function(request, reply) 
    request.payload.password = Common.encrypt(request.payload.password);
    request.payload.scope = "Customer";
    User.saveUser(request.payload, function(err, user) 
        if (!err) 
            var tokenData = 
                userName: user.userName, //email address
                scope: [user.scope],
                firstName: user.firstName,
                lastName: user.lastName
            ;
            Common.sentMailVerificationLink(user,Jwt.sign(tokenData, privateKey));
            reply("Please confirm your email id by clicking on link in email");
         else 
            if (11000 === err.code || 11001 === err.code) 
                reply(Boom.forbidden("please provide another user email"));
             else 
                console.log(Boom.forbidden(err));
                reply(Boom.forbidden(err)); // HTTP 403
            
        
    );

现在,当我点击验证链接时,响应标题如下所示:

 host: '127.0.0.1:3000',
  connection: 'keep-alive',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;
q=0.8',
  'upgrade-insecure-requests': '1',
  'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KH
TML, like Gecko) Chrome/46.0.2490.86 Safari/537.36',
  dnt: '1',
  'accept-encoding': 'gzip, deflate, sdch',
  'accept-language': 'nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2,es;q=0.2',
  'x-cookiesok': 'I explicitly accept all cookies' 

问题: 我缺少响应标头中的授权令牌。如何在标头中发送授权令牌?

【问题讨论】:

令牌在链接中,链接不能设置标题。我认为你只需要从 url 取回你的令牌。 Thx sachacr,我通过从 url 中拆分令牌来实现它:) 好的很好:) 如果我写一个答案你会接受吗? 是的,请这样做:) 【参考方案1】:

您在 url 中发送令牌,因此它不能在标题中返回。您必须从 url 取回它。

【讨论】:

以上是关于响应标头中缺少 jwt 授权令牌的主要内容,如果未能解决你的问题,请参考以下文章

CORS:响应中缺少授权标头(jQuery / Spring)

Angular2 Spring Boot JWT 缺少响应标头

缺少响应提取响应的授权标头

仅在生产中缺少授权标头

缺少 Django、React 和 Rest Framework JWT 身份验证标头

如何在 Angular 中从服务器获取带有 jwt 令牌的响应标头