三十的博客

Cors 简单介绍

本文内容基于 AI 生成结果整理,可能包含不准确信息,仅供参考使用。
发布时间
阅读量 加载中...

什么是 CORS

CORS(跨源资源共享)​​ 是一种安全机制,用于控制不同源(域名、协议、端口)之间的资源访问。

银行取钱的比喻

想象一下 CORS 就像银行的安全规定:

同源策略(没有 CORS 的情况)

这就是浏览器的同源策略:默认只允许访问同域名下的资源。

CORS 的作用

CORS 就像是银行之间的合作协议

  1. 您的银行 ​(前端网站)对对方银行 ​(后端 API)说:
    “我允许我的客户来您这里办理业务”

  2. 对方银行 ​(后端 API)回应:
    “好的,我已经把您加入我的合作银行名单了”

CORS 的实际工作流程

场景:前端网站调用后端 API

没有 CORS 时:​

前端:https://shop.com
后端:https://api.shop.com

浏览器:❌ 阻止访问!域名不同

有 CORS 时:​

前端:我要调用 https://api.shop.com 的用户数据
浏览器:等等,我先问问对方允不允许

↓ 发送"预检请求"(OPTIONS)

后端:我允许!这是我的许可证明:

- 允许来源:https://shop.com
- 允许方法:GET, POST
- 允许携带凭证(cookies)

浏览器:✅ 好的,现在可以发送真实请求了

CORS 头信息的通俗解释

Allow-Origin

作用: 准入名单

Allow-Methods

作用: 允许的操作

Allow-Headers

作用: 允许携带的证件类型

Allow-Credentials

作用: 是否信任你

Expose-Headers

作用: 给你看的内部信息

两种请求类型

简单请求(像去便利店)

条件: 只是看看(GET)或简单登记(POST)

预检请求(像去银行办业务)

条件: 复杂操作(DELETE、PUT)或带特殊证件

代码中的两种模式

完全开放(开发环境)

// 像商场开业促销
"所有人都欢迎!随便进来看看!"

白名单模式(生产环境)

// 像高级会所
"只有会员才能进入,这是会员名单..."

实际例子

购物网站

前端:https://www.taobao.com(淘宝网站)
后端:https://api.taobao.com(淘宝API)

CORS 配置:只允许 www.taobao.com 访问

恶意网站攻击

恶意网站:https://hacker.com
想偷偷调用:https://api.taobao.com(获取用户数据)

结果:❌ 被 CORS 阻止!因为不在白名单中

为什么需要 CORS

保护用户数据

没有 CORS 的话:

合理的跨域协作

有 CORS 的话:

总结

CORS 就是一套"访客管理制度”:​

核心价值: 在允许合理合作的同时,防止恶意访问,保护用户安全。

#Cors