How to Read the Value of an HTTP Header
In the above sections, we have gone through several HTTP headers that are useful for user agent detection and device capabilities detection. Now one essential question remains: how to read the value of an HTTP header?
Reading the value of an HTTP header is not difficult. Just use a server-side scripting technology to write a few lines of code. We will demonstrate how to read the value of an HTTP header using ASP, Java Servlet / JSP, Perl and PHP below.
Retrieving HTTP Headers with ASP
In ASP, you can use the ServerVariables collection of the Request object to retrieve the value of HTTP headers. You can choose either VBScript or JScript (JavaScript implemented by Microsoft) as the scripting language. If you use VBScript, the code for reading HTTP headers should be like this:
' Declaring variables
Dim accept
Dim user_agent
Dim accept_charset
Dim accept_language
Dim x_wap_profile
Dim profile
accept = Request.ServerVariables("HTTP_ACCEPT")
user_agent = Request.ServerVariables("HTTP_USER_AGENT")
accept_charset = Request.ServerVariables("HTTP_ACCEPT_CHARSET")
accept_language = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")
x_wap_profile = Request.ServerVariables("HTTP_X_WAP_PROFILE")
profile = Request.ServerVariables("HTTP_PROFILE")
As you can see above, to retrieve the value of an HTTP header in ASP, we use Request.ServerVariables("HTTP_x"), where x is the HTTP header name with all the "-" characters replaced with the "_" character. ASP has other pre-defined server environment variables that can be placed inside the parentheses of ServerVariables() but we are not going to discuss about them since they are not useful to us here.
If you use JScript, the code for reading HTTP headers should look like this:
var accept = Request.ServerVariables("HTTP_ACCEPT");
var user_agent = Request.ServerVariables("HTTP_USER_AGENT");
var accept_charset = Request.ServerVariables("HTTP_ACCEPT_CHARSET");
var accept_language = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE");
var x_wap_profile = Request.ServerVariables("HTTP_X_WAP_PROFILE");
var profile = Request.ServerVariables("HTTP_PROFILE");
Retrieving HTTP Headers with Java Servlet / JSP
In Java Servlet or JSP, you can use the getHeader() method of the javax.servlet.http.HttpServletRequest object to retrieve the value of HTTP headers. Here is the code for reading HTTP headers:
String accept = request.getHeader("accept");
String user_agent = request.getHeader("user-agent");
String accept_charset = request.getHeader("accept-charset");
String accept_language = request.getHeader("accept-language");
String x_wap_profile = request.getHeader("x-wap-profile");
String profile = request.getHeader("profile");
As you can see, to retrieve the value of an HTTP header whose name is x in Java Servlet or JSP, we use request.getHeader("x"), where request is an instance of the javax.servlet.http.HttpServletRequest class.
Retrieving HTTP Headers with Perl
In Perl, the values of HTTP headers are stored in the %ENV hash. Here is the code for retrieving HTTP headers:
$accept = $ENV{"HTTP_ACCEPT"};
$user_agent = $ENV{"HTTP_USER_AGENT"};
$accept_charset = $ENV{"HTTP_ACCEPT_CHARSET"};
$accept_language = $ENV{"HTTP_ACCEPT_LANGUAGE"};
$x_wap_profile = $ENV{"HTTP_X_WAP_PROFILE"};
$profile = $ENV{"HTTP_PROFILE"};
As you can see above, to retrieve the value of an HTTP header in Perl, we use $ENV{"HTTP_x"}, where x is the HTTP header name with all the "-" characters replaced with the "_" character. Perl has other pre-defined values that can be placed inside the braces of $ENV{} but we are not going to discuss about them since they are not useful to us here.
Retrieving HTTP Headers with PHP
In PHP, the value of HTTP headers are stored in the $_SERVER array. Here is the code for retrieving HTTP headers:
$accept = $_SERVER["HTTP_ACCEPT"];
$user_agent = $_SERVER["HTTP_USER_AGENT"];
$accept_charset = $_SERVER["HTTP_ACCEPT_CHARSET"];
$accept_language = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
$x_wap_profile = $_SERVER["HTTP_X_WAP_PROFILE"];
$profile = $_SERVER["HTTP_PROFILE"];
As you can see above, to retrieve the value of an HTTP header in PHP, we use $_SERVER["HTTP_x"], where x is the HTTP header name with all the "-" characters replaced with the "_" character. PHP has other pre-defined values that can be placed inside the square brackets of $_SERVER[] but we are not going to discuss about them since they are not useful to us here