使用GET函数执行POST请求后如何更改窗口位置的方向

时间:2019-07-04 09:12:40

标签: javascript forms xmlhttprequest

我正在使用jwt保护表单连接的安全,因此我必须使用成功发布请求后给出的令牌来执行get请求。

我尝试使用window.location.href更改位置,但是这样做(这就像一个get请求)并且没有我的令牌,所以我会得到403,因为我没有服务器签名的令牌。

服务器端:

   app.post('/',urlencodedParser,function(req,res){
        //data base verification
                const myToken=jwt.sign({iss:"locahost:8080",user:req.body.email,role:"moderator",admin:false},app.get('secret'));
                res.status(200).json(myToken);


});
app.get('/home',function (req,res){
    res.status(200).sendFile(__dirname+'/views/admin.html');
});

客户端:


    var xhr = new XMLHttpRequest();
    xhr.open("POST", '/', true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function() {
        if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) {
            if(JSON.parse(xhr.response)=="access-denied"){
                createAlert("alert alert-danger","Email ou mot de passe incorrect");
            }else{
                localStorage.setItem('token', JSON.parse(xhr.response));
                homeRequest();
            }       
        }
    }               
    var payLoad = "email=" + email + "&" + "password=" + password; 
    xhr.send(payLoad);   
}
function homeRequest(){
    var xhr=new XMLHttpRequest();
    xhr.open("GET",'/home',true);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.setRequestHeader('Authorization', 'Bearer '+localStorage.getItem('token'));
    xhr.onreadystatechange=function(){
        if(xhr.readyState == XMLHttpRequest.DONE && xhr.status ==200){
            console.log('xhr response ',xhr.response);
        }
    }  
    xhr.send(null);
}

我的实际结果是在xhr响应中有整个页面,但是我想在我的POST请求完成后对另一个路由进行GET请求,我想在标头中使用令牌获取/ home以便服务器接受并发送此页面,但是问题仍然存在于路由/中,并且我无法加载此路由。

很抱歉,如果不够清楚:/

1 个答案:

答案 0 :(得分:0)

我认为保存令牌没有问题,除非服务器端的其他代码做错了。您随时可以使用localStoragesessionStorage
虽然您的问题不清楚。您可以通过loggin结果进行调试,以下是一些建议:
首先,在收到对发布请求的答复后尝试console.log,以查看您收到了什么
另外,尝试在服务器的get函数中console.log,检查是否存在这样的文件