CORS
🌐 CORS (Cross-Origin Resource Sharing)
Sección titulada «🌐 CORS (Cross-Origin Resource Sharing)»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.
🧱 Estructura del Proyecto
Sección titulada «🧱 Estructura del Proyecto»cors-example/├── CMakeLists.txt└── main.cpp
📄 CMakeLists.txt
Sección titulada «📄 CMakeLists.txt»cmake_minimum_required(VERSION 3.20)project(cors_example)
set(CMAKE_CXX_STANDARD 20)set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FetchContent)
FetchContent_Declare(zunoGIT_REPOSITORY https://github.com/ZunoFramework/zuno.gitGIT_TAG main)
FetchContent_MakeAvailable(zuno)
add_executable(cors-example main.cpp)target_link_libraries(cors-example PRIVATE zuno)
📄 main.cpp
Sección titulada «📄 main.cpp»#include <zuno/zuno.hpp>#include <zuno/extensions/cors.hpp>
int main() {zuno::App app;
// Habilitar CORS con configuración por defectoapp.use(zuno::cors());
app.get("/datos", [](auto& req, auto& res) { res.json({ { "mensaje", "CORS habilitado correctamente" } });});
app.listen(3000);}
⚙️ Configuración Personalizada
Sección titulada «⚙️ Configuración Personalizada»Puedes personalizar los encabezados permitidos, métodos y orígenes:
app.use(zuno::cors({.origin = "*",.methods = "GET, POST, OPTIONS",.headers = "Content-Type, Authorization"}));
🧪 Probar con el Navegador
Sección titulada «🧪 Probar con el Navegador»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.
🧭 Próximos Pasos
Sección titulada «🧭 Próximos Pasos»- Combina con autenticación para proteger rutas
- Usa TLS para asegurar las solicitudes
- Agrega limitación de tasa para prevenir abuso
Zuno te permite habilitar CORS de forma segura y declarativa—sin necesidad de escribir encabezados manualmente.