CORS:简单请求的目的是什么?

Rya*_* Lv 4 http cors

从 Mozilla 的文档来看,CORS 的场景有以下三种:

  1. 简单的请求
  2. 预检请求
  3. 带有凭据的请求

Simple Requests有一些缺点,例如,当客户端声明时withCredentials,即使服务器拒绝,带有cookie的HTTP请求已经发送,这可能是一种攻击。

Preflighted request安全,可以覆盖各种场景。Simple Requests即使预检请求可以满足所有要求,为什么人们还要发明?

参考

  1. Access-Control-Allow-Credentials 标头到底有什么作用?

Eve*_*ert 8

简单的解释是“简单请求”出现在 CORS 出现之前。

XMLHTTPRequest 只允许对相同来源的请求,或者如果该请求不会引入尚不存在的安全问题,则允许对不同来源的请求。

例如,可以POST通过 HTML<form>向不同的源发出请求,但无法以编程方式读取响应。

因此,既然这已经是可能的,那么 XMLHTTPRequest 中也不存在该限制也是有道理的。

多年后,当 CORS 出现时,重要的是不破坏那些旧的跨源请求的向后兼容性。如果突然这些请求也需要 CORS 标头,则会破坏依赖它的脚本。

我写了更多关于 CORS 主题的文章,no-cors在这里: https: //evertpot.com/no-cors/了解更多背景信息。