2016-05-25 29 views
2

我使用expressJS作爲我的NodeJS服務器。用戶發送我自己的登錄信息通過POST並檢查證書後,我渲染頁面:使用ExpressJS在POST後更改URL

router.post("/login", function (req: Request, res: Response, next) { 
    if(credentialsOK){ 
     res.render('main'); 
    } 
}); 

的問題是,該網址將成爲http://myaddress/login,我想刪除的地址/登錄。我不想使用重定向,因爲我想通過渲染髮送局部變量。

如何更改網址?

+0

爲什麼不你在客戶端上使用ajax來發出請求,只是使用res.json()通過ajax calll發送本地變量給客戶端?或者你想呈現與呈現內容不同的「主」。 –

+0

@JoseHermosillaRodrigo主要與呈現的不同 – ncohen

+0

以這種方式,我認爲唯一可以做到的方式就是在客戶端完成所有想要渲染的內容,並使用從ajax調用接收的數據進行渲染,I猜測。 –

回答

4

您仍然可以通過res.redirect傳遞本地變量。

router.post("/login", function (req: Request, res: Response, next) { 
    if(credentialsOK){ 
     req.session.localVar = yourLocalVar; 
     res.redirect('/main'); 
    } 
}) 

然後在main路由器:

router.get("/main", function (req: Request, res: Response, next) { 
    var yourLocalVar = req.session.localVar; 
    res.render('main'); 
}) 
1

不能更改從服務器端的URL,但您可以通過使用JavaScript方法window.history.pushState("", "", '/');

更改URL
<script> 
window.history.pushState("", "", '/'); 
</script>