JavaScript метод XMLHttpRequest.setRequestHeader()

Определение и применение

JavaScript метод setRequestHeader() объекта XMLHttpRequest задает значение заголовка HTTP запроса.

Если метод setRequestHeader() вызывается несколько раз с одним и тем же заголовком, то значения объединяются в один заголовок запроса. Каждый раз, когда вы вызываете setRequestHeader() после первого вызова, указанный текст добавляется в конец содержимого существующего заголовка через запятую и пробел (", ").

Если заголовок Accept не был установлен с помощью этого метода, то заголовок Accept с типом */* отправляется с запросом при вызове метода send().

По соображениям безопасности некоторые заголовки могут управляться только браузером (агентом пользователя). Это запрещенные заголовки запроса, например Host, Cookie, Content-Length, Referer и Origin, а также заголовки с префиксами Proxy- и Sec-. Попытка задать такой заголовок молча игнорируется.

Поддержка браузерами

Спецификация: xhr.spec.whatwg

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьapi.XMLHttpRequest.setRequestHeader
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
setRequestHeader✓1✓12✓1✓8✓1.2✓18✓4✓10.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
xhr.setRequestHeader(header, value);

Спецификация

XMLHttpRequest Standard.

Значения параметров

Параметр Описание header — XMLHttpRequest.setRequestHeader()
Параметр Описание
header Имя заголовка, значение которого должно быть установлено. Обязательный параметр.
value Значение, которое будет использовано в качестве тела заголовка. Обязательный параметр.

Исключения

Исключения XMLHttpRequest.setRequestHeader()
Тип исключения Описание
InvalidStateError Возникает, если запрос не находится в состоянии OPENED (метод open() не вызывался) или уже отправлен методом send().
SyntaxError Возникает, если имя или значение не соответствует синтаксису HTTP-заголовка.

Пример использования

В следующем примере мы рассмотрим как с помощью метода setRequestHeader() задать значение заголовка Content-Type (определяет MIME тип ресурса) HTTP запроса и отправить простой текст на сервер методом POST.

JavaScript
function postTextMessage(url, data) {
	let xhr = new XMLHttpRequest(); // инициализируем переменную новым объектом XMLHttpRequest

	xhr.open("POST", url); // определяем параметры для запроса на определенный адрес
	xhr.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); // задаем значение заголовка HTTP запроса (текстовые данные в кодировке UTF-8)
	xhr.send(data); // отправляем запрос на сервер (используем значение параметра в качестве тела запроса)
}

В следующем примере мы рассмотрим как с помощью метода setRequestHeader() задать значение заголовка Content-Type HTTP запроса и отправить данные формы на сервер методом POST.

JavaScript
function postFormData(url, data, callback) {
	let xhr = new XMLHttpRequest(); // инициализируем переменную новым объектом XMLHttpRequest

	xhr.open("POST", url); // определяем параметры для запроса на определенный адрес
	xhr.onreadystatechange = function() { // обработчик событий, вызываемый при запуске события readystatechange (при каждом изменении свойства readyState)
		// проверяем состояние запроса, числовой код состояния HTTP ответа и наличие переданной функции
		if (this.readyState === 4 && this.status == 200 && callback) {
			callback(xhr); // вызываем переданную в качестве параметра функцию
		}
	}
	xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // задаем значение заголовка HTTP запроса (значения кодируются в кортежах с ключом, разделенных символом '&', с '=' между ключом и значением)
	xhr.send(data); // отправляем запрос на сервер (используем значение параметра в качестве тела запроса)
}

В следующем примере мы рассмотрим как с помощью метода setRequestHeader() задать значение заголовка Content-Type HTTP запроса и отправить данные в формате JSON на сервер методом POST.

JavaScript
function postJSONData(url, data, callback) {
	let xhr = new XMLHttpRequest(); // инициализируем переменную новым объектом XMLHttpRequest

	xhr.open("POST", url); // определяем параметры для запроса на определенный адрес
	xhr.onreadystatechange = function() { // обработчик событий, вызываемый при запуске события readystatechange (при каждом изменении свойства readyState)
		// проверяем состояние запроса, числовой код состояния HTTP ответа и наличие переданной функции
		if (this.readyState === 4 && this.status == 200 && callback) {
			callback(xhr); // вызываем переданную в качестве параметра функцию
		}
	}
	xhr.setRequestHeader("Content-Type", "application/json"); // задаем значение заголовка HTTP запроса (данные в формате JSON)
	xhr.send(data); // отправляем запрос на сервер (используем значение параметра в качестве тела запроса)
}