关于浏览器对Access-Control-Allow-Origin
跨域AJAX调用的支持,以下是完整的解答:
Access-Control-Allow-Origin
是HTTP响应头字段,属于CORS(跨域资源共享)机制的核心部分。它由服务器返回,指示允许哪些外部域通过浏览器发起跨域请求。若值为*
,表示允许任意域访问资源(需注意凭证模式下不可用)。
所有现代浏览器均支持通过Access-Control-Allow-Origin
实现跨域AJAX调用,包括:
*
若请求携带Cookie或认证头(withCredentials: true
),服务器必须返回具体的域名(如https://example.com
),而非*
,否则浏览器会拒绝请求。OPTIONS
预检请求,服务器需正确响应Access-Control-Allow-Methods
和Access-Control-Allow-Headers
。服务器端配置(Node.js示例):
const express = require('express');
const app = express();
// 允许所有域访问(非凭证模式)
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
app.get('/api/data', (req, res) => {
res.json({ message: 'CORS enabled' });
});
app.listen(3000);
客户端AJAX调用:
fetch('https://api.example.com/data')
.then(response => response.json())
.then(data => console.log(data));
Access-Control-Allow-Origin
头。*
。OPTIONS
请求,并包含Access-Control-Allow-Methods
和Access-Control-Allow-Headers
。Vary: Origin
头。如需进一步调试,可使用浏览器开发者工具的Network面板查看请求/响应头信息。