首页 > 解决方案 > 为什么在使用 post 请求获取时我无法重定向到我的 get 路由器?

问题描述

配置文件.ejs

<body>
    <div id="box">
        <h1>Hello, <span><%= user.name %></span>!<hr> How are you doing?</h1>
        <!-- <form action="/users/logout" method="POST"></form> -->
            <button onclick="logout()">LOGOUT</button>
        <!-- </form> -->
    </div>

    <script>

        var userToken = document.cookie.replace('jwt=','')
        // console.log(document.cookie)
        // console.log(userToken)

        function logout()
        {
            fetch('/users/logout', {
                method: 'POST',
                headers: {
                'Authorization': 'Bearer ' + userToken
                },
                redirect: 'follow'
            })
            // .then(res => res.json())
            .then(response=>{
                    if (response.redirected) {
                        window.location.href = response.url;
                    }
            })
            .catch(err => { console.log(err) })
        }
        
    </script>
</body>

应用程序.js

app.post('/users/logout' ,async(req,res)=>{
    try{
        req.user.tokens = req.user.tokens.filter((token)=>{return token.token!=req.token})
         await req.user.save()
        // res.status(200).send({message:'Logged Out Successfully!'})
        console.log('Logged Out Successfully!')
        res.redirect('/')
  
    }catch(e){
        res.status(400).send(e)
    }
})
app.get('/',(req,res)=>{
    res.render('index')
    console.log('ok')
})

令人惊讶的是,我从第二个路由器收到消息“ok”。但是我没有重定向到它!网址不变!有人请帮我解决这个问题。我被困在这里很久了!

标签: javascriptnode.jsauthenticationredirect

解决方案


你应该使用window.location.pathname而不是window.location.href


推荐阅读