39 lines
1.4 KiB
PHP
39 lines
1.4 KiB
PHP
<?php
|
|
namespace ProVM\Crypto\Common\Middleware;
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Psr\Http\Server\MiddlewareInterface;
|
|
use Psr\Http\Server\RequestHandlerInterface as Handler;
|
|
use Slim\Routing\RouteContext;
|
|
|
|
final class CORS implements MiddlewareInterface
|
|
{
|
|
/**
|
|
* Invoke middleware.
|
|
*
|
|
* @param ServerRequestInterface $request The request
|
|
* @param RequestHandlerInterface $handler The handler
|
|
*
|
|
* @return ResponseInterface The response
|
|
*/
|
|
public function process(Request $request, Handler $handler): Response {
|
|
$routeContext = RouteContext::fromRequest($request);
|
|
$routingResults = $routeContext->getRoutingResults();
|
|
$methods = $routingResults->getAllowedMethods();
|
|
$requestHeaders = $request->getHeaderLine('Access-Control-Request-Headers');
|
|
|
|
$response = $handler->handle($request);
|
|
|
|
/*$response = $response
|
|
->withHeader('Access-Control-Allow-Origin', '*')
|
|
->withHeader('Access-Control-Allow-Methods', implode(', ', $methods))
|
|
->withHeader('Access-Control-Allow-Headers', $requestHeaders ?: '*');*/
|
|
|
|
// Optional: Allow Ajax CORS requests with Authorization header
|
|
$response = $response->withHeader('Access-Control-Allow-Credentials', 'true');
|
|
|
|
return $response;
|
|
}
|
|
}
|