截获具有特定标头的请求

默认情况下,开发代理会截获与devproxyrc.json文件中配置的 URL 匹配的所有请求。 如果只想截获特定请求(例如特定组件发出的请求),则可以将开发代理配置为截获具有特定标头的请求。

若要截获具有特定标头的请求,请在 devproxyrc.json 文件中添加该 filterByHeaders 属性。 在 filterByHeaders 属性中,指定要用于筛选请求的标头。 对于每个标头,请指定开发代理应包含的值以截获请求。 如果将值留空,则无论其值如何,Dev Proxy 都会截获包含指定标头的请求。

示例:截获具有特定标头和值的请求

以下示例演示如何配置开发代理以截获包含 x-app 包含值 contoso-intranet标头的请求:

{
  "$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.21.0/rc.schema.json",
  "plugins": [
    // [...] trimmed for brevity
  ],
  "filterByHeaders": [
    {
      "name": "x-app",
      "value": "contoso-intranet"
    }
  ]
}

使用此配置,开发代理会截获包含 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/microsoft/dev-proxy/main/schemas/v0.19.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