什么是 跨域资源共享?

跨域资源共享是一种安全机制,允许 Web 浏览器向与提供网页的域不同的服务器发出请求。它使用 HTTP 头来告诉浏览器应该允许哪些跨源请求。

快速了解

创建时间2004 年(初始提案),2014 年(W3C 推荐标准)
规范文档官方规范

工作原理

CORS 的开发是为了放宽同源策略,默认情况下同源策略会阻止网页向不同域发出请求。当浏览器发出跨源请求时,它首先发送预检 OPTIONS 请求以检查服务器是否允许实际请求。服务器响应 CORS 头,指示允许哪些源、方法和头。CORS 对于使用来自不同域的 API 的现代 Web 应用程序至关重要。配置错误的 CORS 可能导致安全漏洞或请求被阻止。

主要特点

  • 放宽同源策略限制
  • 使用 HTTP 头进行访问控制
  • 预检请求检查权限
  • 由服务器端配置控制
  • 支持凭据(cookie、认证头)
  • 可以指定允许的源、方法、头

常见用途

  1. 使用第三方 API
  2. 微服务架构
  3. CDN 资源加载
  4. 单页应用
  5. 跨域字体加载

示例

loading...
Loading code...

常见问题

CORS 和同源策略有什么区别?

同源策略是浏览器的安全功能,限制网页向不同域发出请求。CORS 是一种放宽此限制的机制,允许服务器通过 HTTP 头指定哪些源可以访问其资源。

为什么在 Postman 中 API 正常工作,但在浏览器中却出现 CORS 错误?

Postman 不是浏览器,不会强制执行 CORS 限制。CORS 是浏览器强制执行的安全机制。当您从网页发出请求时,浏览器会检查 CORS 头。要解决此问题,请配置服务器发送适当的 Access-Control-Allow-Origin 头。

什么是预检请求,什么时候会发生?

预检请求是浏览器在某些跨源请求之前自动发送的 OPTIONS 请求,用于检查实际请求是否安全。当请求使用 GET、HEAD 或 POST 以外的方法,或包含自定义头,或 Content-Type 不是 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 时会发生预检。

可以在带有凭据的请求中使用 Access-Control-Allow-Origin: * 吗?

不可以,当请求包含凭据(cookie 或 HTTP 认证)时,不能使用通配符(*)作为 Access-Control-Allow-Origin 的值。必须指定确切的源。这是一种安全措施,防止凭据泄露给非预期的源。

在本地开发时如何解决 CORS 问题?

在开发过程中,您可以:1)配置后端服务器允许您的本地源;2)使用代理服务器(如 webpack-dev-server 代理);3)使用禁用 CORS 的浏览器扩展(出于安全原因不推荐);4)运行本地代理如 cors-anywhere。在生产环境中,始终在服务器上配置正确的 CORS 头。

相关工具

相关术语

相关文章

Bearer Token认证详解【2026】- API安全最佳实践与实现

深入硬核学习现代 RESTful API 设计中无处不在的 Bearer Token 无状态身份认证体系底层机制与企业级最佳安全防范实践。全面掌握 OAuth 2.0 与 OIDC 授权框架中的访问令牌(Access Token)安全分发流程,以及在前端单页应用(SPA)与移动端 App 中如何正确管理 Token 存储、实施刷新(Refresh)机制与防范网络拦截抓包和跨站脚本(XSS/CSRF)攻击风险,彻底确保系统接口的数据安全。

2024-01-17

2025年AI工具导航详解:从模型选择到实战应用

2026 最新全面解析 AI 智能工具生态系统与发展趋势,深度测评并横向对比 OpenAI ChatGPT(GPT-4o)、Anthropic Claude 3.5、Google Gemini、以及国内大模型如文心一言、Kimi 等主流大语言模型(LLM)的核心推理与多模态能力差异。帮助前端开发者、设计师和普通企业用户打破信息差,精准选择最适合自己业务场景的高效 AI 生产力提效工具矩阵。

2026-02-06

Data URL详解【2026】- 内联资源嵌入最佳实践

深入系统学习前端 Data URL(数据统一资源定位符)的核心渲染机制原理与高级性能优化应用。全面掌握如何在 CSS 或 HTML 中直接内联嵌入图片、SVG 矢量图标和自定义 Web 字体,从而有效减少 HTTP 网络请求并大幅优化 Web 页面首屏加载时间。本指南涵盖 Base64 编码体积膨胀机制、浏览器缓存策略权衡分析,并附带基于 Webpack/Vite 的完整前端构建实战代码示例!

2024-01-18