要确保Express API只允许特定的Angular应用程序(域),可以采取以下步骤:
origin
选项为允许的域名,将其他域名列为不允许的。示例代码:
const express = require('express');
const cors = require('cors');
const app = express();
const allowedOrigins = 'https://example.com'; // 允许的域名
const corsOptions = {
origin: function (origin, callback) {
if (allowedOrigins.includes(origin)) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
}
};
app.use(cors(corsOptions));
// 其他API路由和处理逻辑
Referer
或Origin
字段来实现。示例代码:
app.get('/api/data', (req, res) => {
const allowedOrigins = ['https://example.com']; // 允许的域名
const requestOrigin = req.headers.origin || req.headers.referer;
if (allowedOrigins.includes(requestOrigin)) {
// 处理API请求
res.json({ message: 'API response' });
} else {
res.status(403).json({ error: 'Forbidden' });
}
});
示例代码:
const jwt = require('jsonwebtoken');
app.get('/api/data', verifyToken, (req, res) => {
// 处理API请求
res.json({ message: 'API response' });
});
function verifyToken(req, res, next) {
const token = req.headers.authorization;
if (token) {
jwt.verify(token, 'secretKey', (err, decoded) => {
if (err) {
res.status(401).json({ error: 'Unauthorized' });
} else {
req.user = decoded;
next();
}
});
} else {
res.status(401).json({ error: 'Unauthorized' });
}
}
以上是确保Express API只允许特定Angular应用程序(域)访问的一些常见方法。根据实际需求和安全性要求,可以选择适合的方法来保护API。
领取专属 10元无门槛券
手把手带您无忧上云