在 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/ 上也是一个问题。请提交一个问题,我们可能会做一个配置选项来允许这个
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/ 上也是一个问题。请提交一个问题,我们可能会做一个配置选项来允许这个