CORS 预检请求:必须允许 `Access-Control-Request-Headers` 中的所有 Headers 进行 2XX 响应吗?

CORS Preflight Request: Must all Headers in `Access-Control-Request-Headers` be permitted for 2XX response?

我正在使用 Spring 框架 DefaultCorsProcessor implementation, and I found that as long as any single HTTP Request header in Access-Control-Request-Headers is allowed, it will consider the entire CORS preflight request valid (Source). The Access-Control-Allowed-Headers will include the intersection of those found in the Access-Control-Request-Headers and those allowed via CorsConfiguration (Source 的 v5.3.20 编写集成测试。

他们的 GitHub CONTRIBUTING.md 说要在 Whosebug (Source) 上提问,所以我们在这里:

所有 HTTP 请求headers 在Access-Control-Request-Headers CORS 预检请求Header 中是否允许预检获得成功的响应,或者如果允许列出的 HTTP 请求 headers 中的 any 是否可以?

我无法判断这是 Spring 框架中的错误还是留给 CORS 实施者的实施细节。 The WHATWG docs,Mozilla 和 W3C 指出该主题的权威来源,但未提供示例或不够清晰。

如果预检响应中的Access-Control-Allow-Headers是预检请求中Access-Control-Request-Headers的严格子集,客户端将不会发出后续请求.这个服务器行为没问题,由客户端得出正确的结论。

参见 CORS-preflight fetch specification 的第 7 步。