Контекст: Пользовательский API-шлюз, реализованный в ASP.NET и OWIN, размещенный в IIS. Функциональность обратного прокси реализована с использованием правил перезаписи URL IIS. Промежуточное ПО OWIN используется для проверки и / или манипулирования запросами (например, авторизацией) и ответами (например, CORS)
Проблема: При использовании промежуточного программного обеспечения OWIN для добавления / изменения заголовков запроса (например, context.Request.Headers.Add/Set/Append
) они просто отсутствуют, когда он достигает нижестоящего API.
Наблюдения:
- Проблема только в заголовках запроса . Добавление response headers работает нормально.
- Вызовы OWIN, изменяющие заголовки, похоже, зарегистрированы и зарегистрированы IIS:
(результат
context.Request.Headers.Append("X-Test-Last-Middleware", "Testing")
)
- Когда пользовательские заголовки добавляются на стороне клиента (еще до того, как запрос достигнет шлюза OWIN), они прекрасно достигают нисходящего API
- Я пытался разрешить заголовки в переменных сервера IIS URL Rewrite, используя синтаксис / соглашение
HTTP_X_Test_Last_Middleware
, но это не помогло
- При добавлении вручную в правило перезаписи IIS (в качестве серверной переменной, использующей то же соглашение), заголовок присутствует в нисходящем направлении (при условии, что серверная переменная была разрешена). Это, однако, не подходит для нашего варианта использования.
У кого-нибудь есть идеи, как это сделать? Ввод динамической информации в запрос (заголовки) до того, как он достигнет нижестоящего API, является обязательным.
Заранее спасибо.