我想更好地理解这一点。我现在正在操作的心智模型是这样的:
- 在foo.com上托管的JS希望访问bar.com上托管的资源。这不是浏览器喜欢向用户公开的东西,除非可以证明bar.com欢迎这个请求。
- 所以foo.com JS基本上将请求分成了两半。首先,我们通过XMLHttpRequest对象发送正确类型的无数据请求(GET,POST等)。 bar.com上的服务器返回通常会响应任何请求的内容,该请求可能包含也可能不包含Access-Control-Allow-Origin标头。 (编辑:这是一种误解 - 请参阅下面的apsillers的优秀评论)
- 如果浏览器确实获得了这样的标题,则会扫描它以查找Origin(在本例中为foo.com)。如果存在,它继续发送它被要求发送的实际请求。如果没有,它拒绝。 (编辑:这也不太对劲)
醇>
如果这个模型是正确的,我很困惑为什么浏览器会发出带有这个初步请求的Origin标头。客户端是否发生了匹配检查?发送此标头的内容是什么?