Поделиться через


Перехват запросов с определенными заголовками

На первый взгляд
Цель: Фильтрация по определенным заголовкам
Время: 5 минут
Плагины: Отсутствуют
Предварительные требования:настройка прокси-сервера разработки

По умолчанию прокси-сервер разработки перехватывает все запросы, соответствующие URL-адресам, настроенным в файле devproxyrc.json . Если вы хотите перехватывать только определенные запросы, например запросы, выданные определенным компонентом, можно настроить прокси-сервер разработки для перехвата запросов с определенными заголовками.

Чтобы перехватывать запросы с определенными заголовками, в файле devproxyrc.json добавьте свойство filterByHeaders. В свойстве filterByHeaders укажите заголовки, которые необходимо использовать для фильтрации запросов. Для каждого заголовка укажите значение, которое он должен содержать, чтобы Dev Proxy перехватил запрос. Если значение остается пустым, прокси-сервер разработки перехватывает запросы, содержащие указанный заголовок, независимо от его значения.

Пример: перехват запросов с определенным заголовком и значением

В следующем примере показано, как настроить Dev Proxy для перехвата запросов с заголовком x-app, имеющим значение contoso-intranet.

Файл:devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.contoso.com/*"
  ],
  "filterByHeaders": [
    {
      "name": "x-app",
      "value": "contoso-intranet"
    }
  ]
}

Используя эту конфигурацию, Dev Proxy перехватывает запросы, содержащие заголовок x-app со значением contoso-intranet, например:

GET https://api.contoso.com/customers
x-app: contoso-intranet

Прокси-сервер разработки также перехватывает запросы, частично соответствующие указанному значению, например:

GET https://api.contoso.com/customers
x-app: contoso-intranet-search

Прокси-сервер разработки не перехватывает следующий запрос, так как значение заголовка x-app не содержит contoso-intranet:

GET https://api.contoso.com/customers
x-app: contoso-public

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

Пример. Перехват запросов с определенным заголовком независимо от значения

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

Файл:devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://api.contoso.com/*"
  ],
  "filterByHeaders": [
    {
      "name": "x-contoso",
      "value": ""
    }
  ]
}

Используя эту конфигурацию, прокси-сервер разработки перехватывает запросы, содержащие x-contoso заголовок, независимо от его значения:

GET https://api.contoso.com/customers
x-contoso: api-sdk v1.0

Или сделайте так:

GET https://api.contoso.com/customers
x-contoso: intranet

Прокси-сервер разработки не перехватывает следующий запрос, так как он не имеет заголовка x-contoso :

GET https://api.contoso.com/customers
x-app: contoso-public

См. также