안녕하세요 아래 코드는 C#에서 헤더 속성을 캡처하기 위해 구현했습니다. 어떤 이유로 Firstname과 나머지 필드의 데이터 만 가져 오는 것은 null로 표시됩니다. 그들은 값을 가지고 있지만 어떤 이유로 그들은 null로 표시됩니다 알아요.http 헤더 속성을 캡처
// 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;
}
}
사이트에 액세스하는 클라이언트의 헤더가 필요합니까? 왜? 이것들은 표준 헤더가 아니며, 클라이언트가이를 보낼 수 있도록하기 위해 어떤 메커니즘을 갖추고 있습니까? 실제 문제가 발생하면 어떤 디버깅을 했습니까? 클라이언트가 요청에서이 헤더를 보내도록 보장 했습니까? 이 코드를 서버 측에서 실행하면 어디가 잘못됩니까? – David
예, 클라이언트가이 헤더를 보냅니다. 나는 그들도 내 기록에 잡혔습니다. –