如何正确中止请求以便之后可以设置 CORS headers?

How to correctly abort a request so that I can set CORS headers afterwards?

我目前正在通过以下方式中止请求(在链式事件循环期货中效果很好):

return request.eventLoop.makeFailedFuture(Abort(.badRequest))

我的 CORS 配置如下所示:

let corsConfiguration = CORSMiddleware.Configuration(allowedOrigin: .all, allowedMethods: [.GET, .POST, .PUT, .OPTIONS, .DELETE, .PATCH], allowedHeaders: [.accept, .authorization, .contentType, .origin, .xRequestedWith])
    
let corsMiddleware = CORSMiddleware(configuration: corsConfiguration)
app.middleware.use(corsMiddleware)

问题是 CORSMiddleware 似乎没有对中止的请求做任何事情。我该如何解决这个问题,以便我的前端可以读取错误而不是被 CORS 阻止?

看看 docs for CORSMiddleware - 因为您希望 CORS 东西在错误中间件之前触发,所以您需要先注册它。做到这一点的唯一方法是按照描述自己设置整个中间件链