为了验证我的代码,我使用了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});
});
答案 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();
})