@photosho

Как заставить Laravel вернуть Content-Type JSON?

Как заставить laravel установить заголовок Content-Type "application/json; charset=UTF-8"? Делаю и через middleware:

public function handle($request, Closure $next) {
	$request->headers->set('Content-Type', 'application/json; charset=UTF-8');
	return $next($request);
}


(цепляю к route через "->middleware('json')"), и через контроллер:

return response()->json($result)->header('Content-Type', 'application/json; charset=UTF-8');


Все равно в браузере заголовок "content-type: text/html", и ответ не воспринимается как json.
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
@kandrash
Кратко о себе
Первое и главное:
response()->json(...) По-умолчанию возвращает Content-Type: application/json. Ничего дополнительно не требуется.

Второе:
// Как вариант - json принимает заголовки третьим параметром
return response()->json($result, 200, ['Content-Type' => 'application/json; charset=UTF-8']);


Третье:
Вас не смущает что в middleware вы пытаетесь установить заголовки запросу?
// Это примерная идея, нужно проверять/тестировать
public function handle($request, Closure $next)
{
    $response = $next($request);
    $response->header('Content-Type', 'application/json; charset=UTF-8');

    return $response;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы