Я использую Laravel 5.7 для создания API (аутентифицированного с помощью Passport) с некоторым промежуточным программным обеспечением для отправки ETag
в заголовок.Промежуточное программное обеспечение выглядит следующим образом:
public function handle($request, Closure $next)
{
if (!$request->isMethod('get')) {
return $next($request);
}
$response = $next($request);
$currentEtag = DB::table('etag')->first()->etag;
$response->setEtag($currentEtag);
return $response;
}
Но когда я делаю запрос GET
к контроллеру с этим промежуточным программным обеспечением, в заголовках ответа нет ключа ETag
.Я знаю, что вызывается промежуточное программное обеспечение (вставляя в него команду dd
).Мои заголовки ответа выглядят так:
Date: Mon, 08 Oct 2018 10:18:21 GMT
Server: Apache/2.4.25 (Debian)
Cache-Control: private, must-revalidate
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 59
Vary: Authorization
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: Wed, 11 Jan 1984 05:00:00 GMT
Transfer-Encoding: chunked
Content-Type: application/json
РЕДАКТИРОВАТЬ:
Я также использую промежуточное программное обеспечение laravel-cors .В конфигурационном файле у меня есть:
'supportsCredentials' => false,
'allowedOrigins' => ['*'],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['*'],
'allowedMethods' => ['*'],
'exposedHeaders' => ['ETag'],
'maxAge' => 0,