Я использую Slim v3 с промежуточным ПО CORS по адресу https://github.com/tuupola/cors-middleware для обработки заголовков CORS. Все работает, однако теперь мне нужно изменить заголовок Access-Control-Allow-Origin в зависимости от того, под каким именем пользователь входит в систему. У меня есть еще одно промежуточное ПО, которое выполняется после промежуточного ПО CORS для проверки пользователя, и я надеялся, что из этого промежуточного ПО я смогу просто добавить $response = $response->withHeader('Access-Control-Allow-Origin', $userdomain) и он сохранит остальные заголовки CORS, установленные предыдущим промежуточным программным обеспечением, но переопределит этот. Однако, похоже, этого не происходит. Независимо от того, где выполняется это ПО промежуточного слоя, заголовки CORS всегда определяются ПО промежуточного слоя CORS.
Текущая установка выглядит так:
$app->add(new \Internal\OAuth\Middleware($this->getDBs()));
$app->add(new \Tuupola\Middleware\Cors([
"origin" => ['*'],
"methods" => ['GET', 'POST', 'PUT', 'OPTIONS', 'DELETE'],
"headers.allow" => ['', 'Authorization', 'Content-Type', 'Content-Length', 'Origin', 'Accept'],
"credentials" => true,
"cache" => 100
]));
\Internal\OAuth\Middleware __invoke выглядит так:
public function __invoke($req, $res, $next) {
//do authentication stuff
$userdomain = 'http://blahblahblah';
$res = $res->withHeader('Access-Control-Allow-Origin', $userdomain);
return $next($req, $res);
}