未经授权而无法获得请求:MEAN Stack

时间:2018-06-26 09:08:02

标签: node.js express passport.js mean-stack

为了验证我的代码,我使用了passport.js。当我使用get request方法时,出现错误

  

无法加载http://localhost:3000/users/profile:请求标头   字段中的Access-Control-Allow-Header不允许授权   飞行前反应。

这是我的代码。

    authToken: any;
        getProfile() {
            let headers = new Headers();
            this.loadToken();
            headers.append('Authorization', this.authToken);
            headers.append('Content-Type','application/json');
            return this.http.get('http://localhost:3000/users/profile',{headers: headers})
              .map(res => res.json());
          }
        loadToken(){
           const token = localStorage.getItem('id_token');
           this.authToken = token;
         }
storeUserData(token, user){
    localStorage.setItem('id_token', token);
    localStorage.setItem('user', JSON.stringify(user));
    this.authToken = token;
    this.user = user;
  }

这是从我的路线文件中获得的

// Profile
router.get('/profile', passport.authenticate('jwt', {session:false}), (req, res, next) => {
    res.json({user: req.user});
  });

1 个答案:

答案 0 :(得分:1)

您在跨域资源共享(CORS)时遇到了麻烦:一种为Web服务器提供跨域访问控制的机制,该控件可实现安全的跨域数据传输。

最简单的解决方法,npm i cors 然后在您的Express.js应用中进行其他操作:

const cors = require('cors');
var app = express();
app.use(cors());

或者如果您不希望其他依赖项:

var app = express();
app.use( (req,res,next) => {
   res.header('Access-Control-Allow-Origin', '*');
   res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
   next();
})