diff --git a/lib/Server.js b/lib/Server.js index 057d5ad40b..6f2116943e 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -2131,32 +2131,6 @@ class Server { }); } - { - /** - * - * @param {Request} req - * @param {Response} res - * @param {NextFunction} next - * @returns {void} - * - */ - const optionsRequestResponseMiddleware = (req, res, next) => { - if (req.method === "OPTIONS") { - res.statusCode = 204; - res.setHeader("Content-Length", "0"); - res.end(); - return; - } - next(); - }; - - middlewares.push({ - name: "options-middleware", - path: "*", - middleware: optionsRequestResponseMiddleware, - }); - } - middlewares.push({ name: "webpack-dev-middleware", middleware: @@ -2411,6 +2385,28 @@ class Server { }); } + // Register this middleware always as the last one so that it's only used as a + // fallback when no other middleware responses. + middlewares.push({ + name: "options-middleware", + path: "*", + /** + * @param {Request} req + * @param {Response} res + * @param {NextFunction} next + * @returns {void} + */ + middleware: (req, res, next) => { + if (req.method === "OPTIONS") { + res.statusCode = 204; + res.setHeader("Content-Length", "0"); + res.end(); + return; + } + next(); + }, + }); + if (typeof this.options.setupMiddlewares === "function") { middlewares = this.options.setupMiddlewares(middlewares, this); }