同源策略是一种安全机制,用于限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。只有当协议、域名和端口都相同时,才认为是同源。
问题:前端页面无法访问不同源的后端API。 原因:同源策略阻止了跨域请求。 解决方法:
CORS是一种机制,允许服务器声明哪些源可以通过浏览器访问其资源。通过在服务器端设置特定的HTTP头,可以允许跨域请求。
问题:浏览器拒绝跨域请求。 原因:服务器未正确设置CORS头信息。 解决方法:
Access-Control-Allow-Origin
头,允许特定的源访问资源。Access-Control-Allow-Methods
头,允许特定的HTTP方法。Access-Control-Allow-Headers
头,允许特定的自定义头信息。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, PUT, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
if (req.method === 'OPTIONS') {
res.sendStatus(200);
} else {
next();
}
});
app.get('/api/data', (req, res) => {
res.json({ message: 'Hello from server!' });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
通过以上解释和示例代码,你应该能够理解同源策略和CORS的基本概念、优势、应用场景以及如何解决相关问题。
领取专属 10元无门槛券
手把手带您无忧上云