如何在服务器端设置CORS头来允许特定的跨域请求?
时间: 2024-10-05 11:02:12 浏览: 44
在服务器端设置CORS头(Cross-Origin Resource Sharing)来允许特定的跨域请求通常涉及到响应头(HTTP headers)。以下是一个简单的例子,假设你在Node.js环境中使用Express框架:
```javascript
// 使用Express.js
const express = require('express');
const app = express();
// 允许所有来源的简单GET请求
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*"); // 允许所有来源
res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); // 允许POST和OPTIONS请求
res.header("Access-Control-Allow-Headers", "X-Requested-With"); // 允许特定的头部信息
res.header("Access-Control-Max-Age", "1728000"); // 设置缓存时间,单位秒
// 如果请求是预检请求(Preflight Request,通常在实际POST之前发送的OPTIONS请求)
if (req.method === 'OPTIONS') {
res.status(204).end(); // 返回204 No Content
} else {
next();
}
});
app.listen(3000, function() {
console.log('Example app listening on port 3000!');
});
```
在上面的例子中,`Access-Control-Allow-Origin` 表示允许来自哪个源的请求,`*` 表示任何源;`Access-Control-Allow-Methods` 列出允许的HTTP方法;`Access-Control-Allow-Headers` 指定允许的请求头部;`Access-Control-Max-Age` 设置预检请求的缓存时间。
对于更严格的控制,你可以指定具体的起源,而不是 `*`。例如:
```javascript
res.header("Access-Control-Allow-Origin", "http://example.com");
```
这将只允许 `http://example.com` 的跨域请求。
阅读全文