Что такое 'xmlhttp.setRequestHeader ();' и в каких ситуациях он используется? - PullRequest
18 голосов
/ 16 января 2012

Я наткнулся на эту команду, изучая 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>

Ответы [ 4 ]

19 голосов
/ 16 января 2012

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

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

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

См. Это для получения дополнительной информации.

3 голосов
/ 16 января 2012

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

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

0 голосов
/ 29 апреля 2019

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

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

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

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

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

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

xmlhttp = new XMLHttpRequest();

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

Мы должны сообщить принимающему компьютеру, как кодируются данные в теле HTTP-запроса.Для передачи этого существует стандартный заголовок , который добавляется к запросу с помощью метода 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 (.) присоединяет данные для отправки в теле запроса, в вашем случае это переменная с именем 'parameters'.

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

0 голосов
/ 16 января 2012

Устанавливает HTTP-заголовок Content-type для хранения данных в кодировке url, отправленных из формы.

...