【问题标题】:Is there a way to know if a HttpResponse is in Https?有没有办法知道 HttpResponse 是否在 Https 中?
【发布时间】:2012-06-22 15:17:43
【问题描述】:

在一个方法中,我需要知道响应是在 Http 还是 Https 中,以便重定向响应或进行 BinaryWrite,但我只有一个 HttpResponse 参数。

有人知道是否可以使用 HttpResponse 来知道吗?

谢谢。

编辑:

我想知道是否有可能知道 HttpResponse 是 HTTP 还是 HTTPS,因为如果可能的话,我不喜欢使用 HttpContext.Current.Request。

【问题讨论】:

  • 如果您使用的是 IIS 7+,为什么不使用重写功能来处理 http -> https 重定向……这将使您的代码保持良好状态,并且完全不知道这些细节。
  • 你在运行 ASP.Net 服务器端代码吗?
  • 尝试重新表述你的问题 - 很难说它是关于什么的......
  • @jonnyGold 我不能,因为该方法的行为是由 HTTPS 定义的,并且网站必须处理 HTTP 和 HTTPS
  • @SLaks 是的,但我认为这不会改变 HttpResponse 类的可能性。

标签: c# .net https


【解决方案1】:

我不相信。您可以从HttpRequest 找到,但响应只是与请求相关的返回数据流。

【讨论】:

    【解决方案2】:

    这应该可以满足您的需求;

    System.Uri currentUrl = System.Web.HttpContext.Current.Request.Url;
    
    if (!currentUrl.Scheme.Equals(Uri.UriSchemeHttps, stringComparison.CurrentCultureIgnoreCase))
    {
      //Do something here
    }
    

    不可能从 HttpResponse 对象中提取此信息,因为这将通过可能请求请求的相同通信协议发送到客户端。您将需要使用 Request 对象来检查 SSL 连接。

    【讨论】:

    • 有 HttpRequest.IsSecureConnection 但如果可能我不喜欢使用 HttpContext.Current.Request。
    • 回避HttpContext.Current.Request的原因是什么?
    • 只是避免修改大量代码。这是一个不好的理由,我知道。但是你让我觉得我没有尝试在我的方法中直接使用 HttpContext.Current.Request。
    【解决方案3】:

    HttpRequest.IsSecureConnection 属性将完成这项工作,请查看 MS 链接 http://msdn.microsoft.com/en-us/library/system.web.httprequest.issecureconnection(v=vs.110).aspx 上的示例

    【讨论】:

      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2021-04-09
      • 2019-11-17
      相关资源
      最近更新 更多