JackShcherbakov
@JackShcherbakov

Почему нету заголовка Content-Type в массиве, который возвращается функцией getAllHeaders()?

Здравствуйте! Написал 2 скрипта: 1-й посылает запросы, 2-й на них отвечает.
В ответе, который строит скрипт номер 2, я хочу удостоверится, что заголовок Content-Type ответа установлен верно, путем вот написания вот такого учатска кода:
//Упрощенная версия скрипта номер 2

       eader("Content-Type:text/html"); // Не выведится в цикле ниже
	foreach (getallheaders() as $name => $value) {
    	       echo "<br> $name: $value";
	}


Вот 2 скрипта целиком:
1-й :
<?php
	$c = curl_init("http://asd/newFolder/formhandler.php");
	curl_setopt($c, CURLOPT_HTTPHEADER, array("Accept:application/json"));
	curl_exec($c);

?>

2-й:
<?php
	$formats = array("application/json", "text/html");
	$default_format = "application/json";

	if($_SERVER["HTTP_ACCEPT"]){
		if(in_array($_SERVER["HTTP_ACCEPT"], $formats)){
			$format = $_SERVER["HTTP_ACCEPT"];
		}else{
			print "Клиент просит неподдерживаемый формат!";
			exit();
		}
	}
	else{
		$format = $default_format;
	}

	header("Content-Type:$format");
	//Строим тело ответа
	if($format == "application/json"){
			print "Клиенту нужен json";
	}
	else if($format == "text/html"){
print <<<HTML
					<!DOCTYPE html>
					<html>
						<head>
							<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
							<title>Манипулирование файлами</title>
						</head>
					<body>
						<p>Клиенту нужен HTML</p>
					</body>
					</html>	
HTML;
	}
                                                          //ТУТ НЕПОНЯТНО!
	foreach (getallheaders() as $name => $value) {
    	echo "<br> $name: $value";
	}

?>


Результат выполнения скрипта 1:
Клиенту нужен json
Host: asd
Accept: application/json

Всем заранее спасибо!
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Функция "header" добавляет заголовок, который будет отправлен клиенту.
Функция "getallheaders" возвращает все заголовки, которые были получены от клиента.

То есть, в вашем случае getallheaders вернет то, что установлено в первом скрипте:
array("Accept:application/json")

Для получения заголовков, подготовленных к отправке, используйте функцию headers_list.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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