将IIS与URL重写模块一起使用时,OWIN中添加的请求标头不存在

时间:2018-09-10 09:21:01

标签: iis owin url-rewrite-module request-headers owin-middleware

上下文:在ASP.NET和OWIN中实现的自定义API网关,在IIS中托管。反向代理功能是通过使用IIS URL重写规则来实现的。 OWIN中间件用于检查和/或处理请求(例如授权)和响应(例如CORS)

问题:使用OWIN中间件添加/修改请求标头(例如context.Request.Headers.Add/Set/Append)时,它们到达下游API时根本不存在。

观察

  • 问题仅在于 request 标头。添加 response 标头可以正常工作。
  • 修改标头的OWIN调用似乎由IIS注册和记录: IIS logs showing the header is being setcontext.Request.Headers.Append("X-Test-Last-Middleware", "Testing")的结果)
  • 在客户端添加自定义标头时(在请求甚至到达OWIN网关之前),它们到达下游API就很好了
  • 我尝试使用HTTP_X_Test_Last_Middleware语法/约定允许IIS URL重写服务器变量中的标头,但这没有帮助
  • 如果手动将其添加到IIS Rewrite规则(作为使用相同约定的服务器变量),则标头位于下游(前提是允许服务器变量)。但是,这不适合我们的用例。

有人对此有任何想法吗?必须将动态信息在到达下游API之前放入请求(标头)中。

谢谢。

0 个答案:

没有答案