| Línea 139... |
Línea 139... |
| 139 |
|
139 |
|
| 140 |
$response = $event->getResponse();
|
140 |
$response = $event->getResponse();
|
| 141 |
$request = $event->getRequest();
|
141 |
$request = $event->getRequest();
|
| Línea 142... |
Línea -... |
| 142 |
$serviceManager = $event->getApplication()->getServiceManager();
|
- |
|
| 143 |
|
- |
|
| 144 |
// --- Inicio de la lógica de la whitelist de CORS ---
|
142 |
$serviceManager = $event->getApplication()->getServiceManager();
|
| 145 |
// Obtener los orígenes permitidos desde la configuración. Si no está definido, es una cadena vacía.
|
143 |
|
| Línea 146... |
Línea 144... |
| 146 |
$whitelistString = $this->config['leaderslinked.cors.allowed_origins'] ?? '';
|
144 |
$whitelistString = $this->config['leaderslinked.cors.allowed_origins'] ?? '';
|
| 147 |
$allowedOrigins = array_map('trim', explode(',', $whitelistString));
|
145 |
$allowedOrigins = array_map('trim', explode(',', $whitelistString));
|
| Línea 162... |
Línea 160... |
| 162 |
$headers->addHeaderLine('Access-Control-Allow-Headers', 'Authorization, Content-Type, token, secret, rand, created, x-csrf-token');
|
160 |
$headers->addHeaderLine('Access-Control-Allow-Headers', 'Authorization, Content-Type, token, secret, rand, created, x-csrf-token');
|
| 163 |
$headers->addHeaderLine('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
|
161 |
$headers->addHeaderLine('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
|
| 164 |
$headers->addHeaderLine('Access-Control-Max-Age', '86400');
|
162 |
$headers->addHeaderLine('Access-Control-Max-Age', '86400');
|
| Línea 165... |
Línea 163... |
| 165 |
|
163 |
|
| 166 |
}
|
- |
|
| 167 |
// Si el origen no está en la lista blanca, no añadimos ninguna cabecera.
|
- |
|
| 168 |
// El navegador aplicará la política del mismo origen y bloqueará la solicitud.
|
164 |
}
|
| Línea 169... |
Línea -... |
| 169 |
}
|
- |
|
| 170 |
|
- |
|
| 171 |
// Las solicitudes de pre-vuelo (pre-flight) usan el método OPTIONS.
|
- |
|
| 172 |
// Deben devolver las cabeceras CORS y una respuesta 200 OK inmediatamente.
|
- |
|
| 173 |
if ($request->isOptions() && $originHeader) {
|
- |
|
| 174 |
$response->setStatusCode(200);
|
- |
|
| 175 |
// Detenemos la ejecución para las solicitudes de pre-vuelo y devolvemos la respuesta.
|
- |
|
| 176 |
return $response;
|
- |
|
| 177 |
}
|
- |
|
| 178 |
// --- Fin de la lógica de la whitelist de CORS ---
|
165 |
}
|
| Línea 179... |
Línea 166... |
| 179 |
|
166 |
|
| 180 |
$event->setResponse($response);
|
167 |
$event->setResponse($response);
|
| 181 |
|
168 |
|