Что такое 'xmlhttp.setRequestHeader();' и в каких ситуациях он используется?

Я наткнулся на эту команду, изучая AJAX. Парень, который сделал учебник, не объяснил эту команду, что означают параметры внутри команды и что она используется для... Ниже код, который я использовал в нем:

<script type="text/javascript">

        function insert(){
            if(window.XMLHttpRequest){
                xmlhttp = new XMLHttpRequest();
            }else{
                xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
            };

            xmlhttp.onreadystatechange = function(){
                if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
                    document.getElementById('message').innerHTML = xmlhttp.responseText;
                };  
            };

            parameters = 'insert_text='+document.getElementById('insert_text').value;

            xmlhttp.open('POST','ajax_posting_data.php',true);
            xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
            xmlhttp.send(parameters);
        };

    </script>

Ответ 1

HTTP - это протокол. Часть этого протокола - это концепция заголовков запросов. Когда происходит xhr, между клиентом и сервером обменивается текст. Заголовки запросов являются частью текста, который клиент отправляет на сервер.

Это способ установки заголовков запросов. Аргументы, которые вы видите,

1) заголовок для установки (в данном случае Content-type)
2) значение заголовка. (в этом случае x-www-form-urlencoded)

См. дополнительную информацию.

Ответ 2

Это именно то, что он говорит. Он установит "заголовок" для следующего XMLHttpRequest.

Заголовок - это почти пара ключей/значений. Он используется для передачи "мета" информации на целевой сервер для текущего запроса. В вашем конкретном случае его используется для указания серверу, какой тип содержимого используется для этого запроса.

Ответ 3

Он устанавливает HTTP-заголовок Content-type, чтобы содержать данные, закодированные по URL-адресу, отправленные из формы.

Ответ 4

HTTP-запросы - это сообщения, передаваемые из одной компьютерной системы в другую в соответствии с установленной подпрограммой ("протокол" - здесь H yper T ext T ransfer P rotocol) для таких вещей, как отправка данных, запрос данных для отправки обратно, обновление ранее отправленные данные и т.д.

Заголовок - это, по сути, фрагмент информации о данных в теле HTTP-запроса. Его цель - сообщить машине, получающей запрос, какой тип данных содержится в теле запроса, его форматировании, используемом языке, если он устанавливает cookie, дате, хост-машине и т.д.

В HTTP-запрос может быть помещено более одного заголовка, и каждый заголовок имеет компонент "имя" и "значение". На веб-страницах они выглядят так

<meta name="........" content="............."/>

и вы найдете их чуть ниже верхней части веб-страницы внутри элемента.

Чтобы позволить людям отправлять HTTP-запросы из функции JavaScript, мы создаем новый объект XMLHttpRequest, так же как ваш код делает это с

xmlhttp = new XMLHttpRequest();

К этому новому пустому объекту вы намереваетесь добавить данные. Несмотря на свое имя, XMLHttpRequest также позволяет отправлять данные в ряде форматов, отличных от XML, например, HTML-код, текст, JSON и т.д. В вашем примере каждое имя данных будет отделено от его значения символом "=", а каждый data/соединение vale будет отделено от следующего соединения символом "&". Этот вид форматирования известен как кодирование URL.

Мы должны сообщить принимающему компьютеру, как данные в теле HTTP-запроса кодируются URL-адресом. Для передачи этого есть стандартный заголовок, который добавляется в запрос с помощью метода setRequestHeader (..). Этот метод использует 2 параметра: имя заголовка и значение заголовка. Вся эта операция достигается в линии

xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');

Этот метод setRequestHeader (..) должен применяться к запросу после того, как запрос охарактеризован методом open (...), но перед отправкой окончательного запроса методом send (.).

Метод open (...) определяет (1) тип HTTP-запроса, например, GET/POST/PUT и т. Д.; (2) веб-страница, которая содержит скрипт обработки для этого запроса, например, некоторый файл .php или .js, который делает соответствующий запрос к внутренней базе данных; и (3) характер динамики запросов, например асинхронным запросам присваивается значение "истина", синхронным запросам присваивается "ложь".

Метод send (.) Присоединяет данные, которые должны быть отправлены, в теле запроса, в вашем случае это переменная под названием "параметры".

На ваш более широкий вопрос, в каких ситуациях используется setRequestHeader (..), я бы сказал, что он используется в большинстве ситуаций HTTP-запросов. Но некоторые типы данных, добавляемые в тело HTTP-запроса, вызывают настройку по умолчанию для заголовка "Content-Type".