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 步。
我正在使用 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 步。