CORS(跨源资源共享)简介 什么是CORS?

CORS(跨源资源共享)简介 什么是CORS?
最新回答
谁输掉了承诺

2020-11-09 18:26:16

CORS(跨源资源共享)是一种由浏览器实现的安全机制,用于控制不同源的Web应用程序之间的资源访问权限,允许或限制跨域请求以保障数据安全。

  • 核心背景与目的浏览器默认执行同源策略,阻止网页向不同域(协议、域名、端口任一不同)发起请求,防止恶意网站窃取敏感数据。但现代Web开发常需跨域获取资源(如API调用、CDN内容加载),CORS通过标准化流程在安全前提下实现可控的跨域通信。

  • 工作原理当网页向不同域发起请求时,浏览器会检查服务器返回的CORS响应头,决定是否允许请求。例如:

    前端托管在

    http://example.com
    ,需从
    http://api.example2.com
    获取数据时,api.example2.com的服务器需通过CORS头明确授权example.com的访问权限。

  • 常见应用场景

    第三方API访问:如身份验证、支付、社交媒体集成等依赖外部API的服务。

    前后端分离架构:前端与后端部署在不同域或子域时需CORS实现通信。

    CDN资源加载:主站从托管在不同源的CDN请求静态资源(如图片、JS文件)。

  • 关键响应头参数

    Access-Control-Allow-Origin:指定允许访问的源,可为具体域名(如

    https://example.com
    )或通配符*(但含凭据的请求禁用通配符)。

    Access-Control-Allow-Methods:声明允许的HTTP方法(如GET, POST, PUT)。

    Access-Control-Allow-Headers:列出请求可携带的自定义标头(如X-Custom-Header)。

    Access-Control-Allow-Credentials:是否允许携带凭据(如Cookie),需设为true时Allow-Origin不能为*。

    Access-Control-Expose-Headers:指定浏览器可暴露给客户端的额外响应头(默认仅公开Cache-Control等有限标头)。

    Access-Control-Max-Age:缓存预检请求结果的时长(秒),减少重复预检以提升性能。

  • 预检请求(Preflight Request)对非简单请求(如含自定义头或使用PUT/DELETE方法),浏览器会先发送OPTIONS方法预检请求,确认服务器是否允许实际请求。服务器需通过预检响应头(如Allow-Methods)明确授权,浏览器才会继续发送实际请求。

  • 何时需要配置CORS

    前后端分离部署在不同域或端口。

    调用外部API或从CDN加载资源。

    需携带凭据(如Cookie)的跨域请求。

    需自定义请求头或使用非简单HTTP方法。

  • 安全注意事项

    避免滥用通配符*,仅允许可信来源。

    结合身份验证令牌、CSRF防护等机制增强安全性。

    定期审计CORS配置,防止配置错误导致数据泄露。

结论CORS是现代Web开发中平衡安全性与功能性的核心机制。正确配置CORS头可实现跨域资源的安全共享,支持API集成、前后端分离等场景,同时需严格遵循安全原则以防范潜在风险。开发者需深入理解其原理与配置细节,确保应用在跨域场景下既功能完备又安全可靠。