跨域资源共享(CORS)
字数 784 2025-11-15 11:10:18

跨域资源共享(CORS)

  1. 同源策略基础

    • 浏览器默认遵循同源策略,禁止网页向不同源(协议、域名、端口任一不同)的服务器发送跨域请求。
    • 例如,https://a.com 的页面无法通过 JavaScript 访问 https://b.com 的接口,以防止恶意网站窃取用户数据。
  2. 跨域需求场景

    • 现代 Web 应用常需整合多个域的资源,例如:
      • 前端 https://ui.com 调用后端 API https://api.com
      • 使用第三方字体、地图服务等外部资源。
  3. CORS 工作原理

    • 浏览器在发送跨域请求时,自动添加 Origin 头(如 Origin: https://ui.com)。
    • 服务器响应需包含 Access-Control-Allow-Origin 头(如 Access-Control-Allow-Origin: https://ui.com),浏览器才允许前端访问响应内容。
  4. 预检请求

    • 对复杂请求(如含自定义头或 Content-Type: application/json),浏览器先发送 OPTIONS 预检请求。
    • 服务器需响应预检,通过 Access-Control-Allow-Methods(允许方法)和 Access-Control-Allow-Headers(允许头)授权实际请求。
  5. 凭证与缓存

    • 带 Cookie 的请求需服务器设置 Access-Control-Allow-Credentials: true,且 Access-Control-Allow-Origin 不能为通配符 *
    • 预检结果可缓存,通过 Access-Control-Max-Age 减少重复预检。
  6. 错误处理

    • 若服务器未正确配置 CORS,浏览器会拦截响应并抛出网络错误,前端无法读取响应内容。
跨域资源共享(CORS) 同源策略基础 浏览器默认遵循同源策略,禁止网页向不同源(协议、域名、端口任一不同)的服务器发送跨域请求。 例如, https://a.com 的页面无法通过 JavaScript 访问 https://b.com 的接口,以防止恶意网站窃取用户数据。 跨域需求场景 现代 Web 应用常需整合多个域的资源,例如: 前端 https://ui.com 调用后端 API https://api.com 。 使用第三方字体、地图服务等外部资源。 CORS 工作原理 浏览器在发送跨域请求时,自动添加 Origin 头(如 Origin: https://ui.com )。 服务器响应需包含 Access-Control-Allow-Origin 头(如 Access-Control-Allow-Origin: https://ui.com ),浏览器才允许前端访问响应内容。 预检请求 对复杂请求(如含自定义头或 Content-Type: application/json ),浏览器先发送 OPTIONS 预检请求。 服务器需响应预检,通过 Access-Control-Allow-Methods (允许方法)和 Access-Control-Allow-Headers (允许头)授权实际请求。 凭证与缓存 带 Cookie 的请求需服务器设置 Access-Control-Allow-Credentials: true ,且 Access-Control-Allow-Origin 不能为通配符 * 。 预检结果可缓存,通过 Access-Control-Max-Age 减少重复预检。 错误处理 若服务器未正确配置 CORS,浏览器会拦截响应并抛出网络错误,前端无法读取响应内容。