PHP code example of evanschleret / laravel-cors-resolver
1. Go to this page and download the library: Download evanschleret/laravel-cors-resolver 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/ */
evanschleret / laravel-cors-resolver example snippets
return [
'paths' => ['api/*'],
'resolver' => App\Cors\SiteCorsResolver::class,
'failure_mode' => 'deny',
'resolver_exception_mode' => 'deny',
'failure_response' => null,
'observability' => [
'enabled' => true,
],
'cache' => [
'enabled' => true,
'store' => null,
'ttl' => 300,
'namespace' => 'laravel-cors-resolver',
'version' => 'v1',
'tenant_parameter' => null,
'lock' => [
'enabled' => true,
'ttl' => 10,
'wait' => 5,
],
],
];
namespace App\Cors;
use EvanSchleret\LaravelCorsResolver\CorsPolicy;
use EvanSchleret\LaravelCorsResolver\CorsResolver;
use Illuminate\Http\Request;
final class SiteCorsResolver implements CorsResolver
{
public function resolve(Request $request): CorsPolicy
{
$site = $request->route('site');
if ($site === null) {
return CorsPolicy::deny();
}
return CorsPolicy::make()
->allowOrigins($site->cors_origins)
->allowMethods(['POST', 'OPTIONS'])
->allowHeaders(['Content-Type', 'Accept'])
->exposeHeaders(['X-Request-Id'])
->maxAge(300)
->allowCredentials(false);
}
}
use EvanSchleret\LaravelCorsResolver\Resolvers\ClosureCorsResolver;
use EvanSchleret\LaravelCorsResolver\Resolvers\RouteParameterCorsResolver;
$closureResolver = new ClosureCorsResolver(
fn (Request $request): CorsPolicy => CorsPolicy::make()
->allowOrigins(['https://app.example.com'])
);
$siteResolver = new RouteParameterCorsResolver(
'site',
fn ($site, Request $request): CorsPolicy => CorsPolicy::make()
->allowOrigins($site->cors_origins)
);
use EvanSchleret\LaravelCorsResolver\Http\Middleware\ResolveCors;
use Illuminate\Foundation\Configuration\Middleware;
return Application::configure(basePath: dirname(__DIR__))
->withMiddleware(function (Middleware $middleware): void {
$middleware->prepend(ResolveCors::class);
})
->create();
Route::middleware('cors.resolve')->group(function (): void {
Route::post('/api/resources/{resource}', StoreResource::class);
});
$context = CorsResolverContext::fromRequest(
$request,
SiteCorsResolver::class,
config('cors-resolver.paths', [])
);
app(CorsPolicyCache::class)->forget($context);
app(CorsPolicyCache::class)->invalidateContext($context);
app(CorsPolicyCache::class)->invalidateResolver(SiteCorsResolver::class);
app(CorsPolicyCache::class)->invalidateTenant((string) $tenant->getRouteKey());
app(CorsPolicyCache::class)->invalidateTenant(
(string) $tenant->getRouteKey(),
SiteCorsResolver::class,
);