【问题标题】:WCF : How to remove http headers like aspnet version, server etc from WCF service callsWCF:如何从 WCF 服务调用中删除 http 标头,例如 aspnet 版本、服务器等
【发布时间】:2015-08-07 09:30:37
【问题描述】:

出于安全原因,我有一个要求,我不应该披露响应标头,例如服务器、asp.net 版本等。

当调用 WCF 服务时如何限制这些标头。

我已经尝试了以下配置设置,但对于 aspx 页面调用效果很好,但不适用于 WCF 服务调用。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="Server" />
        <remove name="X-Powered-By" />
        <remove name="X-AspNet-Version" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

谢谢, Mahantesh M.B.

【问题讨论】:

    标签: c# asp.net wcf


    【解决方案1】:

    您可以进入 IIS 并选择运行 Web 服务的站点,在 IIS 部分有一个名为 HTTP 响应标头的按钮,单击它并删除标头

    根据您的评论,您可以尝试添加消息检查器

    public class RemoveHeaders: IDispatchMessageInspector
    {
        public object AfterReceiveRequest(ref Message request,
            IClientChannel channel, InstanceContext instanceContext)
        {
            return null;
        }
    
        public void BeforeSendReply(ref Message reply, object correlationState)
        {
    
            var httpCtx = HttpContext.Current;
            if (httpCtx != null)
            {
                httpCtx.Response.Headers.Remove(HttpResponseHeader.Server.ToString());
            }
        }
    }
    

    【讨论】:

    • 嗨奇诺,这一步我已经试过了。当我进入 IIS 中的响应标头时,它最初不包含任何内容。我添加了新的标题并将其设为空白。它工作正常,但对于 WCF 和 Web 服务调用,它仍然继续显示 IIS 和 asp.net 版本:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 2017-01-12
    相关资源
    最近更新 更多