【问题标题】:Capturing http header attributes捕获 http 标头属性
【发布时间】:2013-07-16 15:09:18
【问题描述】:

您好,我在 C# 中实现了以下代码,用于捕获标头属性。 出于某种原因,我只获取名字的数据,其余字段显示为空。我知道它们有值,但由于某种原因,它们显示为 null。

// Load ServerVariable collection into NameValueCollection object.
            System.Collections.Specialized.NameValueCollection headerdetails = Request.Headers;

            List<string> requiredHeaders = new List<string>();
            requiredHeaders.Add("FirstName");
            requiredHeaders.Add("MiddleName");
            requiredHeaders.Add("LastName");
            requiredHeaders.Add("email");


            // Get names of all keys into a string array. 
            String[] arr1 = headerdetails.AllKeys;
            for (int i = 0; i < arr1.Length; i++)
            {
                if (requiredHeaders.Contains(arr1[i]))
                {

                    if (arr1[i] == "FirstName")
                    {
                        String[] arr2 = headerdetails.GetValues(arr1[i]);
                        for (int values = 0; values < arr2.Length; values++)
                        {
                            string firstname = Server.HtmlEncode(arr2[values]);
                            Session["firstName"] = firstname;
                        }
                    }
                    if (arr1[i] == "MiddleName")
                    {
                        String[] arr2 = headerdetails.GetValues(arr1[i]);
                        for (int values = 0; values < arr2.Length; values++)
                        {
                            string middlename = Server.HtmlEncode(arr2[values]);
                            Session["middleName"] = middlename;
                        }
                    }
                    if (arr1[i] == "LastName")
                    {
                        String[] arr2 = headerdetails.GetValues(arr1[i]);
                        for (int values = 0; values < arr2.Length; values++)
                        {
                            string lastname = Server.HtmlEncode(arr2[values]);
                            Session["lastName"] = lastname;
                        }
                    }
                    if (arr1[i] == "email")
                    {
                        String[] arr2 = headerdetails.GetValues(arr1[i]);
                        for (int values = 0; values < arr2.Length; values++)
                        {
                            string email = Server.HtmlEncode(arr2[values]);
                            Session["emailID"] = email;
                        }
                    }

【问题讨论】:

  • 您需要来自访问您网站的客户端的这些标头?为什么?这些不是标准标头,您有什么机制来确保客户端会发送这些标头?对于手头的实际问题,您做了哪些调试?您是否确保客户端在请求中发送这些标头?当你在服务器端单步执行这段代码时,哪里出错了?
  • 是的,客户端正在发送这些标头。我的日志中也记录了它们。

标签: c# asp.net .net http-headers


【解决方案1】:

Alrite 伙计们,我发现了我的错误。傻瓜一个,在循环中有一个 response.redirect,因此我只得到了第一个名字。 PS:自我注意-不要长时间自己工作。

【讨论】:

  • 我想说,你检查过外壳吗?您取决于标题与您定义的完全一样的情况。您可能希望将等式更改为不区分大小写的匹配。
猜你喜欢
  • 2023-03-12
  • 2021-07-08
  • 1970-01-01
  • 2015-09-28
  • 2013-06-11
  • 2013-08-11
  • 1970-01-01
  • 2010-10-29
  • 2016-10-12
相关资源
最近更新 更多