什么是 CORS?

CORS(Cross-Origin Resource Sharing)是浏览器的一种安全机制,用于限制跨域请求。当网页从一个域名请求资源(如API接口)时,若目标服务器未正确配置CORS头,浏览器将阻止该请求(同源策略限制)。

CORS 的工作原理

  1. 浏览器预检请求(OPTIONS)

    • 发送一个预检请求到目标服务器,确认是否允许跨域操作
    • ❗若服务器未返回正确的 Access-Control-Allow-Origin 等头信息,请求将被拦截
  2. 实际请求与响应

    • 预检通过后,浏览器允许实际请求(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
CORS 请求流程

扩展学习

📌 注意:CORS 配置需结合具体业务场景,避免过度开放导致安全风险。