跨域资源共享(CORS)
字数 784 2025-11-15 11:10:18
跨域资源共享(CORS)
-
同源策略基础
- 浏览器默认遵循同源策略,禁止网页向不同源(协议、域名、端口任一不同)的服务器发送跨域请求。
- 例如,
https://a.com的页面无法通过 JavaScript 访问https://b.com的接口,以防止恶意网站窃取用户数据。
-
跨域需求场景
- 现代 Web 应用常需整合多个域的资源,例如:
- 前端
https://ui.com调用后端 APIhttps://api.com。 - 使用第三方字体、地图服务等外部资源。
- 前端
- 现代 Web 应用常需整合多个域的资源,例如:
-
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减少重复预检。
- 带 Cookie 的请求需服务器设置
-
错误处理
- 若服务器未正确配置 CORS,浏览器会拦截响应并抛出网络错误,前端无法读取响应内容。