使用GET / HEAD方法的请求不能有主体,React

时间:2019-11-13 16:48:14

标签: node.js reactjs jwt

我正在尝试使用我的api来测试我的jwt,但是出现此错误: index.js:1375类型错误:无法在“窗口”上执行“获取”:使用GET / HEAD方法的请求不能具有正文

这是我在reactjs中的方法:

   getDate = () => {
        console.log(JSON.parse(sessionStorage.getItem('token')));
        const data = {token: sessionStorage.getItem('token')};
        const requestInfo = {
            method:'GET',
            body: JSON.stringify({data}),
            headers: new Headers({
                'Content-Type': 'application/json'
            }),
        };
        console.log('chegouaq');
        fetch('http://localhost:9000/users', requestInfo)
        .then(response => {
            console.log('chegouaq2');
            if(response.ok){
                return response.json();
            }
            throw new Error("Token Invalido..")
        })
        .then(data => {
            console.log(JSON.stringify(data));
            return;
        })
        .catch(e => {
            this.setState({message: e.message})
            console.error(e);
        });
    }

我将jwtToken保存在sessionStorage中 并使用以下方法将其发送到我的后端以验证此令牌:

   app.route('/users')
        .all(app.auth.authenticate())
        .get((req,res)=>{
            usersController
                .getAll()
                .then(data => {
                    res.json(data);
                })
                .catch(error=>{
                    console.log(error);
                    res.status(400);
                });

        })

这是我的.all(app.auth.authenticate()):

  

authenticate:()=> passport.authenticate('jwt',jwtConfig.session)

1 个答案:

答案 0 :(得分:0)

这是因为您尝试使用GET发出body请求。

获取请求没有正文,只有POSTPATCHPUT

将以下内容更改为POST

const requestInfo = {
  method: 'POST', // change here
  body: JSON.stringify({data}),
  headers: new Headers({
    'Content-Type': 'application/json'
  }),
};

请记住正确阅读您的错误,因为有时它们有时很有趣,请解释出什么问题了:)