11import pify from 'pify'
2- import { defineEventHandler , fromNodeMiddleware } from 'h3'
2+ import { defineEventHandler , fromNodeMiddleware , handleCors , setHeader } from 'h3'
3+ import type { H3CorsOptions } from 'h3'
34import type { IncomingMessage , MultiWatching , ServerResponse } from 'webpack-dev-middleware'
45import webpackDevMiddleware from 'webpack-dev-middleware'
56import webpackHotMiddleware from 'webpack-hot-middleware'
@@ -100,7 +101,7 @@ async function createDevMiddleware (compiler: Compiler) {
100101 } )
101102
102103 // Register devMiddleware on server
103- const devHandler = wdmToH3Handler ( devMiddleware )
104+ const devHandler = wdmToH3Handler ( devMiddleware , nuxt . options . devServer . cors )
104105 const hotHandler = fromNodeMiddleware ( hotMiddleware )
105106 await nuxt . callHook ( 'server:devHandler' , defineEventHandler ( async ( event ) => {
106107 const body = await devHandler ( event )
@@ -114,8 +115,14 @@ async function createDevMiddleware (compiler: Compiler) {
114115}
115116
116117// TODO: implement upstream in `webpack-dev-middleware`
117- function wdmToH3Handler ( devMiddleware : webpackDevMiddleware . API < IncomingMessage , ServerResponse > ) {
118+ function wdmToH3Handler ( devMiddleware : webpackDevMiddleware . API < IncomingMessage , ServerResponse > , corsOptions : H3CorsOptions ) {
118119 return defineEventHandler ( async ( event ) => {
120+ const isPreflight = handleCors ( event , corsOptions )
121+ if ( isPreflight ) {
122+ return null
123+ }
124+ setHeader ( event , 'Vary' , 'Origin' )
125+
119126 event . context . webpack = {
120127 ...event . context . webpack ,
121128 devMiddleware : devMiddleware . context ,
0 commit comments