CORS:简单请求的目的是啥?
Posted
技术标签:
【中文标题】CORS:简单请求的目的是啥?【英文标题】:CORS: what's the purpose of Simple Request?CORS:简单请求的目的是什么? 【发布时间】:2020-10-21 10:50:55 【问题描述】:来自 Mozilla 的 documentation,有三种 CORS 场景:
-
简单的请求
预检请求
使用凭据请求
Simple Requests
有一些缺点,例如,当客户端声明withCredentials
时,即使服务器拒绝,带有cookie的HTTP请求已经发送,这可能是攻击。
Preflighted request
更安全,可以覆盖各种场景。为什么人们发明Simple Requests
,即使预先发送的请求可以满足所有要求?
参考
-
What exactly does the Access-Control-Allow-Credentials header do?
【问题讨论】:
【参考方案1】:简单的解释是“简单请求”出现在 CORS 存在之前。
XMLHTTPRequest 仅允许来自同一来源的请求,或者如果该请求没有引入不存在的安全问题,则允许不同来源的请求。
例如,可以通过 html <form>
向不同来源发出 POST
请求,但您无法以编程方式读取响应。
因此,鉴于这已经成为可能,因此 XMLHTTPRequest 中也不存在该限制是有道理的。
多年后,当 CORS 出现时,重要的是不要破坏那些旧的跨域请求的向后兼容性。如果突然这些请求也需要 CORS 标头,它将破坏依赖它的脚本。
我在这里写了更多关于这个主题、CORS 和 no-cors
的内容:https://evertpot.com/no-cors/ 以获得更多背景信息。
【讨论】:
以上是关于CORS:简单请求的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 CORS 请求上 POST 之前使用 OPTION 请求的原因是啥? [复制]