在 Micronaut 中为 IE 合并 CORS 响应 headers

Merge CORS response headers for IE in Micronaut

Micronaut 像这样发送多个 header:

Access-Control-Allow-Headers:   content-type
Access-Control-Allow-Headers: authorization

这会混淆 IE,它只会看到第一个 header。这会导致像 "Request header authorization was not present in the Access-Control-Allow-Headers list.".

这样的请求错误

如果header合并,IE理解:

Access-Control-Allow-Headers:   content-type, authorization

我通过如下替换 CorsFilter bean(使用 Kotlin)解决了这个问题:

@Replaces(CorsFilter::class)
class OurCorsFilter(corsConfiguration: HttpServerConfiguration.CorsConfiguration) : CorsFilter(corsConfiguration) {

    override fun setAllowHeaders(optionalAllowHeaders: List<*>, response: MutableHttpResponse<*>) {
        response.header(ACCESS_CONTROL_ALLOW_HEADERS, optionalAllowHeaders.joinToString())
    }

}

但是,这对我来说感觉有点过分了,此外,将此问题完全修复在其他地方可能会更好。有没有其他办法解决这个问题,最好使用配置?

看起来这甚至在 Edge https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/12046299/ 上也是一个问题。请提交一个问题,我们可能会做一个配置选项来允许这个