Добавление заголовков к внутренним запросам в Laravel 4

#rest #symfony #laravel #laravel-4

#rest #symfony #laravel #laravel-4

Вопрос:

У меня есть настройка, ориентированная на API, созданная с помощью Laravel 4, состоящая из REST API, интерфейса и панели администрирования. И интерфейс, и adminpanel используют API, используя внутренние запросы.

Я делаю внутренние запросы следующим образом:

 $request = Request::create($endpoint, $method, $parameters, $cookies, $files, $server, $content);
$this->response = Route::dispatch($request);
  

И все работает нормально.

Теперь я хочу защитить API, используя подход, аналогичный подходу AWS, и когда я создаю запрос выше, я хочу также установить некоторые пользовательские заголовки (ключ api, подпись, временная метка).

Я не нашел способа добавить заголовки к пользовательскому запросу. Возможно ли это при использовании внутренних запросов?

Ответ №1:

Оказывается, настройка заголовков так же проста, как выполнение

 $request->headers->set('MyHeaderName', 'header value');
  

перед отправкой запроса.

Проблема (и причина, по которой это не сработало, когда я пытался) заключается в том, что в API я должен использовать Route::getCurrentRequest() для получения моего пользовательского запроса (в отличие от простого запроса фасада запроса):

 $request = Route::getCurrentRequest();
$all_headers = $request->header();
$specific_header = $request->header("SomeHeaderName");
  

Комментарии:

1. Request::instance()->headers->set('MyHeaderName', 'header value'); также возможно.

Ответ №2:

Вы можете установить заголовки, используя событие приложения в вашем filters.php

 App::after(function($request, $response)
{
   $response->headers->set('key','value');
});
  

Если вы обнаружите, что используете их много, перемещение их в их собственный поставщик услуг может обеспечить лучшую структуру.

Комментарии:

1. Спасибо, но, боюсь, это не сработает. Мне нужно иметь возможность прикреплять заголовки так, как я могу прикреплять $cookies, а затем Route::dispatch() все это.