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


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

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

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

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

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

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    // [...] trimmed for brevity
  ],
  "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.

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

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

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    // [...] trimmed for brevity
  ],
  "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