Установка заголовков запроса

Umbrella JS — это лёгкая библиотека для работы с DOM и AJAX в JavaScript, предоставляющая удобный и лаконичный синтаксис для выполнения сетевых запросов. Одной из ключевых возможностей является настройка HTTP-заголовков при отправке запросов, что особенно важно для работы с API, авторизации и передачи дополнительных метаданных на сервер.

Основы работы с u.ajax()

Метод u.ajax() используется для выполнения AJAX-запросов. Он принимает объект конфигурации, где можно задать URL, метод запроса, тело, тип данных и, что важно, заголовки. Формат объекта следующий:

u.ajax({
  url: '/api/data',
  method: 'POST',
  data: JSON.stringify({ key: 'value' }),
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer token'
  },
  success: function(response) {
    console.log('Ответ сервера:', response);
  },
  error: function(error) {
    console.error('Ошибка запроса:', error);
  }
});

Ключ headers принимает объект, где каждая пара ключ-значение соответствует заголовку и его значению. Заголовки можно задавать как стандартные (Content-Type, Accept), так и кастомные (X-Custom-Header).

Использование нескольких заголовков

Umbrella JS позволяет добавлять сразу несколько заголовков без ограничений. Важный момент — ключи заголовков должны быть строками, а значения также строками. Пример запроса с множественными заголовками:

u.ajax({
  url: '/api/user',
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'X-Requested-With': 'UmbrellaJS',
    'Authorization': 'Bearer myToken123'
  },
  success: function(data) {
    console.log('Данные пользователя:', data);
  }
});

Динамическая установка заголовков

Заголовки можно формировать динамически, например, в зависимости от состояния приложения или данных, полученных из других источников. Это достигается простым присвоением объекта перед вызовом u.ajax():

const token = localStorage.getItem('authToken');
const headers = {
  'Content-Type': 'application/json',
  'Authorization': `Bearer ${token}`
};

u.ajax({
  url: '/api/profile',
  method: 'PUT',
  data: JSON.stringify({ name: 'Иван', age: 30 }),
  headers: headers,
  success: function(response) {
    console.log('Профиль обновлён:', response);
  }
});

Особенности использования

  • Переопределение заголовков: Если в одном и том же объекте конфигурации указаны несколько одинаковых заголовков, последний перезапишет предыдущий.
  • Стандарты CORS: При запросах на другие домены браузер может блокировать некоторые нестандартные заголовки, если сервер не разрешает их через Access-Control-Allow-Headers.
  • Тип контента: Для отправки JSON важно указывать Content-Type: application/json; иначе данные могут быть интерпретированы как обычный текст или форма.

Примеры с разными методами

GET-запрос с заголовками:

u.ajax({
  url: '/api/items',
  method: 'GET',
  headers: {
    'Accept': 'application/json',
    'X-Client-Version': '1.0'
  },
  success: function(items) {
    console.log('Список элементов:', items);
  }
});

POST-запрос с авторизацией:

u.ajax({
  url: '/api/login',
  method: 'POST',
  data: JSON.stringify({ username: 'user', password: 'pass' }),
  headers: {
    'Content-Type': 'application/json'
  },
  success: function(token) {
    console.log('Токен получен:', token);
  }
});

Интеграция с другими функциями Umbrella JS

Umbrella JS позволяет сочетать установку заголовков с другими методами библиотеки, например, для последовательных запросов или обработки событий:

u('#submit').on('click', function() {
  const payload = { query: u('#input').val() };
  
  u.ajax({
    url: '/api/search',
    method: 'POST',
    data: JSON.stringify(payload),
    headers: {
      'Content-Type': 'application/json',
      'X-Search-Source': 'form'
    },
    success: function(results) {
      u('#results').html(results.map(r => `<li>${r.name}</li>`).join(''));
    }
  });
});

Заголовки играют ключевую роль в передаче информации между клиентом и сервером. Правильная их настройка в Umbrella JS обеспечивает гибкость, безопасность и совместимость с различными API и стандартами HTTP.