推荐答案
跨域资源共享(CORS)是一种机制,允许网页从不同的域(即跨域)请求资源。它通过使用额外的 HTTP 头来告诉浏览器,允许某个网页从不同的域访问资源。
如何配置 CORS
在 Node.js 中,可以通过使用 cors 中间件来配置 CORS。以下是一个简单的示例:
// www.javascriptcn.com code example
const express = require('express');
const cors = require('cors');
const app = express();
// 允许所有来源的请求
app.use(cors());
// 或者配置特定的来源
app.use(cors({
origin: 'https://example.com'
}));
app.get('/data', (req, res) => {
res.json({ message: 'This is CORS-enabled for all origins!' });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});本题详细解读
什么是跨域资源共享 (CORS)
跨域资源共享(CORS)是一种安全机制,用于控制浏览器是否允许网页从不同的域请求资源。默认情况下,浏览器会阻止跨域请求,以防止恶意网站访问用户的敏感数据。CORS 通过在 HTTP 头中添加特定的字段来告诉浏览器,允许某个网页从不同的域访问资源。
CORS 的工作原理
当浏览器发起跨域请求时,会先发送一个预检请求(Preflight Request),这是一个 OPTIONS 请求,用于检查服务器是否允许实际的请求。服务器通过响应头中的 Access-Control-Allow-Origin 字段来告诉浏览器是否允许跨域请求。
配置 CORS 的常见选项
origin: 允许访问资源的来源。可以是一个字符串(如'https://example.com'),也可以是一个数组(如['https://example.com', 'https://another-domain.com']),或者设置为'*'允许所有来源。methods: 允许的 HTTP 方法,如['GET', 'POST', 'PUT', 'DELETE']。allowedHeaders: 允许的请求头,如['Content-Type', 'Authorization']。credentials: 是否允许发送凭据(如 cookies),设置为true时,Access-Control-Allow-Origin不能为'*'。
示例配置
app.use(cors({
origin: 'https://example.com',
methods: ['GET', 'POST', 'PUT', 'DELETE'],
allowedHeaders: ['Content-Type', 'Authorization'],
credentials: true
}));通过以上配置,服务器将允许来自 https://example.com 的跨域请求,并且允许使用 GET、POST、PUT 和 DELETE 方法,同时允许 Content-Type 和 Authorization 请求头,并且允许发送凭据。