服务端设置:在提供API的服务器上配置响应头,明确允许来自特定域名的跨域请求。这个要怎么操作
时间: 2024-09-19 09:04:14 浏览: 44
服务端配置实现AJAX跨域请求
服务端设置跨域响应头的操作通常是针对HTTP服务器的,比如Node.js使用Express框架,可以这样做:
```javascript
// 使用Express中间件
const express = require('express');
const app = express();
app.use((req, res, next) => {
// 设置允许的CORS来源
if (req.header('Origin')) {
res.setHeader('Access-Control-Allow-Origin', req.header('Origin'));
// 允许其他CORS请求头
res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
// 允许GET、POST请求方法
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
// 对于OPTIONS预检请求,返回204
if (req.method === 'OPTIONS') {
res.status(204).end();
} else {
next(); // 否则继续处理正常的请求
}
} else {
res.status(403).send({ error: 'CORS not allowed without Origin header.' });
}
});
app.listen(3000, () => console.log('Server started on port 3000'));
```
这里的关键是在接收到请求时检查`Origin`头,并相应地设置允许的来源。对于`OPTIONS`请求(预飞检),只返回状态码而不发送数据,以确认跨域请求是被允许的。
在Python的Flask框架中,类似操作如下:
```python
from flask import Flask, make_response
app = Flask(__name__)
@app.after_request
def after_request(response):
# 添加CORS头
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type,Authorization'
response.headers['Access-Control-Allow-Methods'] = 'GET,PUT,POST,DELETE'
return response
if __name__ == '__main__':
app.run()
```
这都是为了告诉浏览器,你的服务器允许来自指定域名的跨域请求。请替换`'*'`为你实际所需的源。
阅读全文