一、跨越问题
解决方法:
在你的代码中,为了解决跨域问题,你可以使用 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');
});
});
解释:
-
app.use(cors());
:这一行引入cors
中间件,解决跨域问题。它必须放在所有路由之前(即在/register
路由之前)。 -
中间件的顺序 :
cors
应该在所有路由之前调用,确保所有的请求都能被处理跨域。
现在,无论你是在不同端口的前端发送请求(例如,Vue.js 运行在 localhost:8080
而服务器运行在 localhost:3000
),都应该不会再有跨域问题。