#laravel #header #response
#laravel #заголовок #ответ
Вопрос:
У меня есть промежуточное программное обеспечение, в котором я назначаю http-заголовки запросу / ответу.
$response = $next($request)->header('x-robots-tag', 'noindex', false);
В промежуточном программном обеспечении я также могу применить эту строку после выполнения приведенного выше, чтобы получить значение, которое я только что установил…
echo $response->headers->get('x-robots-tag');
Но я хочу получить доступ к этому за пределами промежуточного программного обеспечения, но я не уверен, как вернуть объект ответа для достижения этой цели.
Как я могу получить объект $response из моего контроллера?
$response = WHATGOESHERE?;
echo $response->headers->get('x-robots-tag');
Кажется, я не могу понять, что поместить в часть WHAT GOES HERE, чтобы снова получить доступ к объекту ответа.
Обновление # 1:
Все еще нерешенный, но часть проблемы, по-видимому, заключается в том, что для добавления тегов заголовка к объекту ответа в промежуточном программном обеспечении требуется $next($request)
, а закрытие $next вызывает выполнение обработки ответа после выполнения кода контроллера. Поэтому, хотя я не уверен, как настроить таргетинг на объект ответа из контроллера, не похоже, что ему будет присвоен тег заголовка до тех пор, пока он не будет назначен позже.
Я мог бы установить заголовки непосредственно в PHP в промежуточном программном обеспечении с помощью
public function handle($request, Closure $next /*, $tags */)
{
$tags = array_except(func_get_args(), [0,1]);
if( count($tags) > 0){
header('x-robots-tag: ' . implode(', ', $tags));
}
return $next($request);
}
а затем получить к нему доступ в контроллере, вытащив его из headers_list()
, но это не идеально и работает за пределами laravel. способы…
Для контекста идея заключалась в том, чтобы назначить промежуточное программное обеспечение маршрутам и с помощью промежуточного программного обеспечения назначить заголовок x-robots-tag
ответа с требуемыми атрибутами. noindex, nofollow
, что угодно… Затем я надеялся зафиксировать это и соответствующим образом заполнить эквивалентные мета-теги, используя данные, предоставленные x-robots-tag
. Такой подход — убить двух зайцев одним выстрелом, но это оказалось сложнее, чем я ожидал.
Комментарии:
1. Документация Laravel 5.8 по ответам.
2. Спасибо. Я несколько раз прочитал эту страницу документации и еще не нашел там ответа. 🙁