【问题标题】:How do I read all X Headers in asp.net如何阅读 asp.net 中的所有 X 标头
【发布时间】:2013-02-18 14:37:05
【问题描述】:

我希望能够使用某种形式的 ID 来识别移动设备。

我读了这个答案:Get unique, static id from a device via web request about reading x headers in asp.net 但是当我使用以下代码列出所有标头时,我没有得到任何有用的 x 标头

    For Each var As String In Request.ServerVariables
        Response.Write("<b>" & var & "</b>: " & Request(var) & "<br>")
    Next

在我的安卓设备上,我得到的唯一 X 标头是 HTTP_X_WAP_PROFILE

【问题讨论】:

  • 马特,您是否尝试过实施我建议的答案?如果是这样 - 你能得到“x”标题吗?

标签: asp.net .net mobile http-headers ultidev


【解决方案1】:

如果您想阅读 HTTP 标头,您就走错了路。 ServerVariables 仅保存来自标头的一些信息。

您应该查看 Request.Headers 属性。以下代码将列出来自 HTTP 请求的所有标头。假设您引用的“x”标题将在那里..

For Each headerName As String In Request.Headers.AllKeys
    Response.Write("<b>" & headerName & "</b>: " & Request.Headers(headerName) & "<br>")
Next

【讨论】:

  • @Matt Wilko - 我对 Ultidev Web Server Pro 一无所知。但是您应该能够判断您要查找的信息是否存在。试试我提供的代码。如果您在 Request.Headers 集合中找不到您要查找的标头,则您无权访问它们。该集合包含所有 HTTP 请求标头。
  • 我试过这个,但我在我的 android 上得到的唯一 x 标头是 x-wap-profile。我想这可能是我能得到的全部?
  • @Matt - 您可能希望检查您的 android 手机随请求提交的标头,以查看是否有特定标头正在发送但被您的服务器剥离。最简单的方法可能是编写您自己的 TCP 侦听器(服务器)并让它侦听端口 80。然后,从您的 android 手机尝试浏览到您的模拟服务器并捕获请求流。这样,您将看到通过网络发送的所有内容。
【解决方案2】:

要读取标题值,您可以使用以下代码。
我通过使用user-agent 来瘦身,从中您可以了解浏览器。

C#

var headers = Request.Headers.ToString();

// If you want it formated in some other way.
var headers = String.Empty;
foreach (var key in Request.Headers.AllKeys)
  headers += key + "=" + Request.Headers[key] + Environment.NewLine;

VB.NET:

Dim headers = Request.Headers.ToString()

' If you want it formated in some other way.'
Dim headers As String = String.Empty
For Each key In Request.Headers.AllKeys
  headers &= key & "=" & Request.Headers(key) & Environment.NewLine
Next

来自Detecting mobile device user agents in ASP.NET (Android)

 //for Mobile device 
    protected override void OnInit(EventArgs e) 
    { 

        string userAgent = Request.UserAgent; 
        if (userAgent.Contains("BlackBerry") 
          || (userAgent.Contains("iPhone") || (userAgent.Contains("Android")))) 
        { 
            //add css ref to header from code behind 
            HtmlLink css = new HtmlLink(); 
            css.Href = ResolveClientUrl("~/mobile.css"); 
            css.Attributes["rel"] = "stylesheet";  
            css.Attributes["type"] = "text/css";  
            css.Attributes["media"] = "all";  
            Page.Header.Controls.Add(css); 
        }       
    }

【讨论】:

  • 谢谢,但我不想知道浏览器我想找到一个唯一的设备 ID,这就是为什么我试图找到我链接到的页面上列出的 x 标头
猜你喜欢
  • 2011-11-18
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 1970-01-01
  • 2015-10-23
  • 2020-08-20
  • 1970-01-01
相关资源
最近更新 更多