1

从 Mozilla 的文档中,有三种 CORS 场景:

  1. 简单的请求
  2. 预检请求
  3. 使用凭据请求

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

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

参考

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

1 回答 1

6

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

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

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

因此,鉴于这已经成为可能,XMLHTTPRequest 中也不存在该限制是有道理的。

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

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

于 2020-07-01T05:44:00.347 回答