HTTP код ответа после перенаправления на не доменное имя ascii - PullRequest
0 голосов
/ 07 июня 2018

Как я могу получить все заголовки для перенаправления домена в домен не-ASCII?

Смежный вопрос

Домен www.sendevinci.co.il, перенаправляющий на не-ASCII домен www. מגשי-אירוח. Co.il.

Мой код:

$url = 'http://www.sendevinci.co.il';

$options['http'] = array(
	'method' => "HEAD",
        'ignore_errors' => 1,
        'header' =>
 	       	"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" .
        	"Accept-Language: en-US,en;q=0.8\r\n".
                "Keep-Alive: timeout=3, max=10\r\n",
                "Connection: keep-alive",
	'user_agent' => self::get_user_agent_string($user_agent),
        "timeout" => 3
);

$context = stream_context_create($options);

$body = file_get_contents($url, NULL, $context);

print_r($http_response_header);

Результат:

Array
(
    [0] => HTTP/1.1 301 Moved Permanently
    [1] => Server: nginx
    [2] => Date: Thu, 07 Jun 2018 13:07:30 GMT
    [3] => Content-Type: text/html; charset=UTF-8
    [4] => Connection: close
    [5] => X-Powered-By: PHP/7.2.6
    [6] => Location: https://www.מגשי-אירוח.co.il
    [7] => X-Powered-By: PleskLin
)

Массив также должен содержать 200 статусов, но это не так.

Код отлично работает для доменов ascii-name, перенаправляющих в домены ascii-name.

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

На самом деле, file_get_contents работает ТОЛЬКО с доменными именами ascii.Так что нет простого решения получить все заголовки http ...

0 голосов
/ 08 июня 2018

На уровне протокола HTTP код ответа 200 с заголовком Location не имеет смысла.Вы можете использовать заголовок Location с 201 или 202, но обычно 3xx используется для отправки клиента в новое местоположение.Я полагаю, что ответ, который вы получаете, является правильным.В форме маркера заголовок местоположения HTTP действителен с:

  • 201 - создан новый ресурс;получить соответствующее новое местоположение
  • 202 - запрос принят, еще обрабатывается, отметьте «здесь»
  • 3xx - общее перенаправление (301 / постоянное, 302 / временное и т. д.)

Другими словами, ваше утверждение о том, что [t] массив также должен содержать 200 статусов , неверно.Код состояния HTTP, указанный сервером в этом примере, - 301.

...