Что такое '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".