我正在使用 Asp.Net WebApi (RC) 开发 Web API,并通过 http“Authorization”标头传递用户凭据。我在服务器端接收“Authorization”http 标头时遇到问题。我在本地机器上测试时能够接收它。甚至在生产服务器上托管并通过内部 IP 地址访问 URL 时也能正常工作。但在公共域上发布时不起作用。
所以我猜测,这与 IIS 或 ISA 服务器有关。
另外,如果我在 IIS 中创建 2 个网站,一个在域上发布,一个在内部发布(都指向同一个物理目录),那么它也可以在内部托管的网站上运行,但不能在已发布(公开)的网站上运行。
所以我猜测这与 ISA 服务器有关(我对 ISA 服务器非常陌生)但不确定它是否可以修改 http 标头信息。
任何帮助均感激不尽。
谢谢,
答案1
我遇到了同样的问题(使用最新版本的 asp.net web api)。我将其追溯到 ISA Server 2006 发布规则,并按照以下步骤进行了修复:
- 转到发布规则的属性并将身份验证委派设置为“无委派,但直接对客户端进行身份验证”
- 停留在属性对话框中并转到侦听器 -> 属性 -> 身份验证 -> 高级 -> 选中复选框“允许通过 HTTP 进行客户端身份验证”
就这样了。此后,授权标头不再被删除。
答案2
您实际上并没有提供足够的有关您的环境的信息,更具体地说是 ISA 盒本身的信息来帮助解决此问题。
但是,我的第一个猜测是 ISA 框正在剥离一些标头信息。如果本地版本有效,则很可能这不是 IIS 问题。
请随意发布有关您的设置的更多信息。