Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

netlify dev returns 403 for static files in subdirectories on Windows (backslash in rewritten path)

Abierto Apto para principiantes
#8,548 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@Ramnath0521 ya está trabajando en esto.

Desde el 6/10/2026.

  • #8571 de @Ramnath0521 — abierto

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
88/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
node.js, typescript
Área
backend, cli

Línea de trabajo

Comienza en dist/utils/proxy.js, en getStatic, especialmente en la llamada a path.relative que construye la URL reescrita. Reproduce el problema en Windows con una carpeta de publicación que contenga css/styles.css y solicita el archivo mediante netlify dev. Se considera terminado cuando los archivos estáticos anidados reciben 200 a través del proxy, al igual que los archivos de la raíz y el comportamiento en macOS/Linux.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Describe the bug

On Windows, netlify dev returns 403 Forbidden for any static file inside a subdirectory of the publish folder (e.g. /css/styles.css, /js/app.js). Files at the root of the publish folder (e.g. /index.html, /manifest.json) are served fine.

The cause is in getStatic in dist/utils/proxy.js (line 116 in 27.10.2):

return `/${path.relative(publicFolder, file)}`;

On Windows path.relative returns backslash-separated paths, so /css/styles.css becomes /css\styles.css. It is then passed through encodeURI (req.url = encodeURI(decodeURI(pathname)) + reqUrl.search) and forwarded as /css%5Cstyles.css, which @fastify/static in the static server rejects with:

{"statusCode":403,"error":"Forbidden","message":"Forbidden"}
Steps to reproduce
  1. On Windows, a site with publish = "src" and src/css/styles.css
  2. [dev] framework = "#static" (same result with netlify dev --dir src)
  3. netlify dev
  4. curl http://localhost:8888/css/styles.css → 403
  5. curl http://localhost:<static server port>/css/styles.css (bypassing the proxy) → 200
Expected behavior

/css/styles.css is served with 200 through the netlify dev proxy, as on macOS/Linux and in production.

Actual behavior

403 for every static file in a subdirectory, so pages load without their CSS/JS.

Notes
  • Windows-specific: on macOS/Linux path.relative returns forward slashes, so the path is correct. Production (Netlify CDN) is not affected.
  • Possible fix: normalize the separator, e.g.
    return `/${path.relative(publicFolder, file).split(path.sep).join('/')}`;
Environment
  • netlify-cli 27.10.2
  • Node.js v24.15.0
  • Windows 11 (10.0.26200)
Lenguaje dominante
TypeScript
Estrellas
1.9k
Forks
476
Merge medio
1 d 18 h
PR fusionados (30 d)
37

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de netlify/cli

Todos los issues de netlify/cli

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.