Saltearse al contenido

CORS

Este ejemplo muestra cómo habilitar CORS en tu servidor Zuno usando la extensión cors. Esto es esencial cuando tu frontend y backend están en dominios distintos, como en aplicaciones SPA o APIs públicas.


cors-example/
├── CMakeLists.txt
└── main.cpp

cmake_minimum_required(VERSION 3.20)
project(cors_example)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(
zuno
GIT_REPOSITORY https://github.com/ZunoFramework/zuno.git
GIT_TAG main
)
FetchContent_MakeAvailable(zuno)
add_executable(cors-example main.cpp)
target_link_libraries(cors-example PRIVATE zuno)

#include <zuno/zuno.hpp>
#include <zuno/extensions/cors.hpp>
int main() {
zuno::App app;
// Habilitar CORS con configuración por defecto
app.use(zuno::cors());
app.get("/datos", [](auto& req, auto& res) {
res.json({
{ "mensaje", "CORS habilitado correctamente" }
});
});
app.listen(3000);
}

Puedes personalizar los encabezados permitidos, métodos y orígenes:

app.use(zuno::cors({
.origin = "*",
.methods = "GET, POST, OPTIONS",
.headers = "Content-Type, Authorization"
}));

Desde una aplicación frontend en otro origen (por ejemplo, http://localhost:5173), puedes hacer:

fetch("http://localhost:3000/datos")
.then(res => res.json())
.then(console.log);

Si CORS está habilitado correctamente, no verás errores en la consola del navegador.



Zuno te permite habilitar CORS de forma segura y declarativa—sin necesidad de escribir encabezados manualmente.