我正在尝试在express中使用res.sendFile显示html文件

编程入门 行业动态 更新时间:2024-10-09 19:16:31

我正在尝试在express中使用res.sendFile显示html<a href=https://www.elefans.com/category/jswz/34/1771438.html style=文件"/>

我正在尝试在express中使用res.sendFile显示html文件

我正在尝试实现一个工作流程,在该流程中,当用户登录时,用户凭证将通过ajax发布到express的其中一条路由中,以检查用户是否存在,如果存在,则express路由将发送将消息“授权”返回给ajax调用,然后调用成功回调,其中另一个ajax调用将标头和数据一起发送到快速路由(/ reroute)。这个快速的/ reroute api尝试将res.redirect重定向到另一个路由/ homepage。在/ homepage路由内,我尝试使用res.sendfile显示html文件,而res.sendfile无法正常工作。

我的登录ajax通话

$(document).on("click", "#login", (e) => {
const email = $('#logemail').val().trim();
const pass = $('#password').val().trim();
$.ajax({
    url: "http://localhost:4000/checkuserexists",
    type: "POST",
    dataType: "JSON",
    data: {
        email: email,
        pass: pass
    },
    success: function(data, textStatus, request) {
        console.log(data)
        if (data.message === "authorised") {
            const token = request.getResponseHeader('access-token');
            localStorage.setItem("access-token", token);
            $.ajax({
                url: "http://localhost:4000/reroute",
                type: "GET",
                dataType: "JSON",
                beforeSend: function(xhr) {
                    xhr.setRequestHeader('access-token', token);
                },
                data: {
                    redirectTo: 'homepage'
                },
                success: function(data) {
                    console.log(data + " from ajax  ")
                }
            })
        } else {
            $('.alertbox').show();
            $('.alertbox').text("User unauthorised");
        }
    }
})

})

我的快速路线(/重新路线)

const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
if (req.header('access-token')) {
    const token = req.header('access-token');
    const redirectTo = req.query.redirectTo;
    if (redirectTo === 'homepage') {
        res.setHeader('access-token', token)
        res.redirect('/homepage')
      }
    }
  })


   module.exports = router;

我的首页路线

const express = require('express');
const path = require('path');
const token_middleware = require('../middlewares/jwtauth');
const router = express.Router();
router.use(express.static(path.join(__dirname, "../public")))
router.get('/', token_middleware, (req, res) => {
if (req.status === "exists") {
    res.sendFile(path.join(__dirname, "../public/homepage.html"));
} else {
    res.redirect('/');
}
  })
   module.exports = router;
回答如下:

您正在使用Ajax请求URL。

浏览器要求输入/reroute并重定向到/homepage

然后它要求/homepage并获取HTML文档。

[将HTML文档传递给JavaScript引擎,然后jQuery尝试将其解析为JSON(由于您说了Content-Type,它忽略了dataType: "JSON")和错误。


如果要使用Ajax进行此操作,请不要重定向。返回一些JSON,告诉您的代码登录成功。然后,您可以使用客户端JS和location对象进行导航。

如果要重定向,则使用常规表单提交而不是Ajax。

更多推荐

我正在尝试在express中使用res.sendFile显示html文件

本文发布于:2024-05-07 08:52:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755484.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   res   express   html   sendFile

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!