html - Access-Control-Allow-Headers header 有什么意义

标签 html http cross-domain cors

我正在阅读 Cross-Origin Resource Sharing标准,有一件事对我来说没有意义。

假设我想从域 A 向域 B 发送请求,包括授权 header 。据我了解,域 B 上的服务器需要通过发送 header Access-Control-Allow-Headers 来接受这一点。

这有什么意义?我认为同源策略是为了保护来自域 B 的数据不泄露到域 A 上的网站。我不明白 A 向 B 发送哪些 header 有什么关系。

最佳答案

请注意,预检请求存在的全部原因是为您在 CORS 之前无法执行的请求提供保护。每个简单的请求(例如不需要预检的请求)都可以使用现有机制完成。例如,没有自定义 header 的 GET 请求类似于 JSONP 请求,而没有自定义 header 的 POST 请求类似于 JavaScript form.submit()。服务器必须已经准备好接收来自其他域的这些类型的请求,因为它们可以在没有 CORS 的情况下执行。

CORS 为服务器引入了一系列新的 HTTP 方法和 header 。为了验证服务器是否准备好响应这些请求,引入了预检的概念。预检验证在将实际请求发送到服务器之前是否允许特定的 HTTP 方法/ header 组合。

为什么不发送实际的请求,而只是阻止客户端接收响应呢?实际请求可能会产生副作用(例如,更新或删除数据库条目),而仅发送请求就可能触发副作用。

发送预检并验证 HTTP header ,确保服务器不会对 CORS 引入的新型请求感到惊讶。

关于html - Access-Control-Allow-Headers header 有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17992042/

相关文章:

javascript - 具有两条二次曲线的 Canvas 剪辑图像

jquery - 启用Web服务的跨域访问

authentication - 如何在我的网站上实现 ‘sign in with google’?

javascript - 如何允许特定站点的交叉脚本?

html - 是否可以用 css 渐变做一条曲线?

html - 如何防止div换行?

javascript - IE图片宽度 chop

Angular:从 Spotify 请求访问 token 时出现 HTTP post 请求错误 "grant_type parameter is missing"

apache - 如何*防止* Apache2 设置 Content-Type header ?

javascript - Node.js 请求返回对象