跨源资源共享(CORS)是一种机制,它允许Web应用在不同的源之间进行通信。简单来说,当你的Web应用尝试从不同的源(例如,不同的域名、协议或端口)请求数据时,浏览器会阻止这些请求,除非服务器明确允许。
CORS 基本概念
- 简单请求:不涉及自定义头部、POST请求、文件上传等操作。
- 预检请求:浏览器在发起简单请求之前,会先发送一个预检请求(OPTIONS),以确定服务器是否允许跨源请求。
- 响应头部:服务器需要返回特定的响应头部,以允许或拒绝跨源请求。
CORS 配置
服务器可以通过设置HTTP响应头部来控制CORS:
Access-Control-Allow-Origin
:指定允许的源。Access-Control-Allow-Methods
:指定允许的HTTP方法。Access-Control-Allow-Headers
:指定允许的头部。
示例
假设我们有一个API端点 /api/data
,我们可以这样配置CORS:
app.get('/api/data', (req, res) => {
res.header('Access-Control-Allow-Origin', 'https://example.com');
res.header('Access-Control-Allow-Methods', 'GET, POST');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
res.send('Data');
});
扩展阅读
更多关于CORS的信息,可以参考MDN Web Docs。
CORS 图解