1. Go to this page and download the library: Download apploud/cors-psr7 library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
apploud / cors-psr7 example snippets
use Neomerx\Cors\Analyzer;
use Psr\Http\Message\RequestInterface;
use Neomerx\Cors\Contracts\AnalysisResultInterface;
class CorsMiddleware
{
/**
* Handle an incoming request.
*
* @param RequestInterface $request
* @param Closure $next
*
* @return mixed
*/
public function handle(RequestInterface $request, Closure $next)
{
$cors = Analyzer::instance($this->getCorsSettings())->analyze($request);
switch ($cors->getRequestType()) {
case AnalysisResultInterface::ERR_NO_HOST_HEADER:
case AnalysisResultInterface::ERR_ORIGIN_NOT_ALLOWED:
case AnalysisResultInterface::ERR_METHOD_NOT_SUPPORTED:
case AnalysisResultInterface::ERR_HEADERS_NOT_SUPPORTED:
// return 4XX HTTP error
return ...;
case AnalysisResultInterface::TYPE_PRE_FLIGHT_REQUEST:
$corsHeaders = $cors->getResponseHeaders();
// return 200 HTTP with $corsHeaders
return ...;
case AnalysisResultInterface::TYPE_REQUEST_OUT_OF_CORS_SCOPE:
// call next middleware handler
return $next($request);
default:
// actual CORS request
$response = $next($request);
$corsHeaders = $cors->getResponseHeaders();
// add CORS headers to Response $response
...
return $response;
}
}
}
use Neomerx\Cors\Strategies\Settings;
$settings = (new Settings())
->setServerOrigin('https', 'api.example.com', 443)
->setPreFlightCacheMaxAge(0)
->setCredentialsSupported()
->setAllowedOrigins(['https://www.example.com', ...]) // or enableAllOriginsAllowed()
->setAllowedMethods(['GET', 'POST', 'DELETE', ...]) // or enableAllMethodsAllowed()
->setAllowedHeaders(['X-Custom-Header', ...]) // or enableAllHeadersAllowed()
->setExposedHeaders(['X-Custom-Header', ...])
->disableAddAllowedMethodsToPreFlightResponse()
->disableAddAllowedHeadersToPreFlightResponse()
->enableCheckHost();
$cors = Analyzer::instance($settings)->analyze($request);
class CustomMethodsSettings extends Settings
{
public function getRequestAllowedMethods(RequestInterface $request): string
{
// An external Access Control System could be used to determine
// which methods are allowed for this request.
return ...;
}
}
$cors = Analyzer::instance(new CustomMethodsSettings())->analyze($request);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.