在Ubuntu上使用Node.js实现跨域请求,通常会用到http
或express
这样的库来创建服务器,并通过设置响应头来允许跨域。以下是使用这两种方法的示例:
const http = require('http');
const server = http.createServer((req, res) => {
// 设置允许跨域的头部
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// 处理预检请求
if (req.method === 'OPTIONS') {
res.writeHead(200);
res.end();
return;
}
// 响应请求
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
node your-server-file.js
mkdir my-express-app
cd my-express-app
npm init -y
npm install express
const express = require('express');
const app = express();
// 允许所有域名进行跨域访问
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
next();
});
// 处理GET请求
app.get('/', (req, res) => {
res.send('Hello World!');
});
// 处理POST请求
app.post('/data', (req, res) => {
res.json({ message: 'Data received' });
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
node your-express-app-file.js
在这两个例子中,我们都设置了Access-Control-Allow-Origin
头部来允许跨域请求。你可以将其设置为特定的域名,而不是使用通配符*
,以增加安全性。例如:
res.setHeader('Access-Control-Allow-Origin', 'http://example.com');
此外,如果你的API需要处理复杂的跨域请求(例如,带有自定义头或使用PUT、DELETE等方法的请求),你可能需要使用像cors
这样的中间件来简化配置。
安装cors
中间件:
npm install cors
在Express应用中使用cors
:
const cors = require('cors');
app.use(cors());
这样就可以更灵活地控制跨域请求的策略。