开发在线课程管理系统过程中遇到的问题

一、跨越问题

解决方法:

在你的代码中,为了解决跨域问题,你可以使用 cors 中间件来处理跨域资源共享(CORS)。你已经正确安装并引入了 cors,接下来只需要确保中间件的顺序正确。

javascript 复制代码
const express = require('express');
const app = express();
const PORT = 3000;

// 跨域中间件(解决跨域问题)
const cors = require('cors');
app.use(cors()); // 必须在所有路由之前使用

// 解析 JSON 请求
app.use(express.json()); 

// 基础路由
app.get('/', (req, res) => {
    res.send('Online Course Management API is running.');
});

// 启动服务器监听指定端口
app.listen(PORT, () => {
    console.log(`Server is running on http://localhost:${PORT}`);
});

// 连接数据库
const mysql = require('mysql');

const db = mysql.createConnection({
    host: 'localhost',
    user: 'XXXX',
    password: 'XXXXX',
    database: 'course_management'
});

// 处理数据库连接错误
db.connect(err => {
    if (err) {
        console.error('连接失败:', err);
        return;
    }
    console.log('数据库连接成功');
});

// 注册路由
app.post('/register', (req, res) => {
    console.log('收到 POST 请求');
    const { username, password, role } = req.body;
    console.log('请求数据:', { username, password, role }); // 打印请求体内容

    // 检查输入是否有效
    if (!username || !password || !role) {
        return res.status(400).send('Invalid input');
    }

    // 构造 SQL 语句插入用户信息
    const sql = `INSERT INTO users (username, password, role) VALUES (?, ?, ?)`;

    // 执行 SQL 查询并处理结果
    db.query(sql, [username, password, role], (err, result) => {
        if (err) {
            console.error('SQL 插入错误:', err);
            return res.status(500).send('Database error');
        }
        console.log('插入结果:', result); // 打印插入结果
        res.send('User registered');
    });
});

解释:

  1. app.use(cors()); :这一行引入 cors 中间件,解决跨域问题。它必须放在所有路由之前(即在 /register 路由之前)。

  2. 中间件的顺序cors 应该在所有路由之前调用,确保所有的请求都能被处理跨域。

现在,无论你是在不同端口的前端发送请求(例如,Vue.js 运行在 localhost:8080 而服务器运行在 localhost:3000),都应该不会再有跨域问题。

相关推荐
kyriewen2 小时前
别再这样写条件渲染了——你的React组件里藏着这5种定时炸弹
前端·javascript·react.js
梦想CAD控件3 小时前
网页端CAD的图形选择、编辑与夹点操作教程
前端·javascript·node.js
月月大王的3D日记4 小时前
Three.js 入门系列(8):六种光源全解析 —— 关灯了,开光!
前端·javascript
达子6664 小时前
第26章_HarmonyOs开发图解之 设备管理
vue.js
自然 醒4 小时前
v-tooltip自定义指令封装
前端·javascript·vue.js
其美杰布-富贵-李6 小时前
第 10 篇:灯光与阴影
javascript·three.js
小高0078 小时前
🔥🔥🔥TypeScript 7 正式版来了:别只看 10 倍速度,这 4 个迁移坑更值得注意
前端·javascript·面试
万敏8 小时前
Vue3 全栈实战第四周:watch、nextTick、性能优化与 keep-alive 实战记录
vue.js·node.js·全栈
布兰妮甜9 小时前
Vue 大型页面性能优化:四个核心策略
vue.js·性能优化·虚拟滚动·组件缓存·按需加载
di24k24k9 小时前
多个 el-form 共用同一 ref 导致表单校验部分失效
前端·javascript·vue.js·elementui