什么是 CORS?
CORS(Cross-Origin Resource Sharing)是浏览器的一种安全机制,用于限制跨域请求。当网页从一个域名请求资源(如API接口)时,若目标服务器未正确配置CORS头,浏览器将阻止该请求(同源策略限制)。
CORS 的工作原理
浏览器预检请求(OPTIONS)
- 发送一个预检请求到目标服务器,确认是否允许跨域操作
- ❗若服务器未返回正确的
Access-Control-Allow-Origin
等头信息,请求将被拦截
实际请求与响应
- 预检通过后,浏览器允许实际请求(GET/POST等)
- 服务器需在响应头中添加:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, DELETE Access-Control-Allow-Headers: Content-Type, Authorization
常见问题与解决方案
问题1:请求被拦截
🔍 检查目标服务器是否返回了Access-Control-Allow-Origin
头
📘 扩展阅读:CORS 配置最佳实践问题2:请求头缺失
⚠️ 确保服务器响应包含必要的CORS头信息
🖼️ 示例图:CORS_配置_示例
问题3:开发环境测试困难
🔄 使用代理服务器(如Nginx)转发请求,绕过浏览器限制
📌 本站教程:如何搭建CORS代理服务器
实战建议
- 📌 安全原则:避免使用
*
通配符,明确指定允许的域名 - 📌 调试工具:使用浏览器开发者工具查看网络请求的CORS头信息
- 📌 框架支持:
- Express.js:
app.use(cors())
- Flask:
CORS(app)
- Django:
django-cors-headers
- Express.js:
扩展学习
📌 注意:CORS 配置需结合具体业务场景,避免过度开放导致安全风险。