ВСЕ решение для ошибки не работало для меня "Ответ на предполетный запрос не проходит проверку контроля доступа: у него нет статуса HTTP ok" - PullRequest
0 голосов
/ 27 сентября 2019

Я работаю над угловым проектом, я создал промежуточное программное обеспечение для аутентификации, которое:

module.exports = (req, res, next) => {
    try {
        const token = req.headers.authorization.split(' ')[1];
        const { email, userId } = jwt.verify(token, 'secret');

        req.userEmail = email;
        req.userId = userId;

        return next();
    } catch (err) { 
        console.log(err);
        return res.status(401).json({ msg: 'Invalid token'});
    }
};

Теперь, когда я пытаюсь сделать http-вызовы из angular, выдается следующая ошибка: enter image description here

Мой CORS выглядит следующим образом:

app.use((req, res, next) => { 
        res.setHeader('Access-Control-Allow-Origin', '*');
        res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
        res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');

        next();
    });

Ошибка на бэкэнде говорит: «не удается прочитать разделение свойств неопределенного ..»

Мой перехватчик Http:

export class AuthInterceptor implements HttpInterceptor { 
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { 
        const clonedReq = req.clone({
            headers: req.headers.append('authorization', 'Bearer ' + localStorage.getItem('token'))
        })

        return next.handle(clonedReq);
    }
}

Я на 101% уверен, что токен есть ... Единственное, что решает мою проблему:

module.exports = (req, res, next) => {
    try {
        const token = req.headers.authorization.split(' ')[1];
        const { email, userId } = jwt.verify(token, 'sc');

        req.userEmail = email;
        req.userId = userId;

        return next();
    } catch (err) { 
        console.log(err);
        // HERE:: If I change status from 401 to 200
        return res.status(401).json({ msg: 'Invalid token'});
    }
};

Пожалуйста, помогите ....

...