Я использую 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,
Задача ещё не решена.
Других решений пока нет …