Не авторизован в получении запроса: MEAN Stack - PullRequest
0 голосов
/ 26 июня 2018

Для проверки в моем коде я использую passport.js.Когда я использую метод запроса get, я получаю сообщение об ошибке:

Не удалось загрузить http://localhost:3000/users/profile: Поле заголовка запроса Авторизация не разрешена Access-Control-Allow-Headers в ответе перед полетом.

Это мой код.

    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 голосов
/ 26 июня 2018

У вас возникли проблемы с перекрестным общим доступом к ресурсам (CORS): механизмом, который обеспечивает веб-серверам контроль междоменного доступа, который обеспечивает безопасную междоменную передачу данных.

Самое простое исправление, 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();
})
...