返回

跨域资源共享:全面解读 CORS

前端

跨域资源共享 (CORS) 是 W3C 制定的一项标准,全称“Cross-origin Resource Sharing”,意为跨源资源共享。它旨在解决浏览器与不同源服务器进行 AJAX 请求时的限制,使前端应用程序能够安全地从其他域获取资源。

CORS 的工作原理

CORS 是一种 HTTP 协议扩展,通过添加额外的 HTTP 头信息来允许或拒绝跨域请求。当浏览器向跨域服务器发送请求时,它会在请求头中包含 Origin 头,指明请求的来源域。服务器收到请求后,会检查 Origin 头,并根据预先配置的 CORS 规则决定是否允许跨域访问。

如果服务器允许跨域访问,它会在响应头中添加 Access-Control-Allow-Origin 头,指明允许哪些域跨域访问。服务器还可以指定其他选项,例如允许的 HTTP 方法、请求头和响应头。

CORS 的安全机制

为了防止跨域请求被恶意利用,CORS 采用了以下安全机制:

  • 同源策略: 浏览器只能向与当前页面同源的服务器发送请求。同源是指协议、主机名和端口号都相同。
  • 预检请求: 对于某些类型的请求(例如 PUT、DELETE 和 POST),浏览器会先发送一个预检请求(OPTIONS 请求)到服务器,以检查服务器是否允许跨域访问。服务器会根据 CORS 规则返回预检响应,其中包含允许的 HTTP 方法、请求头和响应头。
  • 凭据隔离: CORS 请求默认不会发送凭据(例如 cookie 和 HTTP 身份验证信息)。如果需要发送凭据,服务器必须在响应头中添加 Access-Control-Allow-Credentials 头。

CORS 的使用场景

CORS 被广泛应用于以下场景:

  • AJAX 请求: 前端应用程序通过 JavaScript 的 XMLHttpRequest 对象向不同域的服务器发送请求。
  • JSONP 请求: 一种绕过同源策略的跨域请求方式,通过在