This documentation is archived and is not being maintained.

WebHeaderCollection.IsRestricted Method

Tests whether the specified HTTP header can be set.

[Visual Basic]
Public Shared Function IsRestricted( _
   ByVal headerName As String _
) As Boolean
public static bool IsRestricted(
 string headerName
public: static bool IsRestricted(
 String* headerName
public static function IsRestricted(
   headerName : String
) : Boolean;


The header to test.

Return Value

true if the header is restricted; otherwise false.


Exception Type Condition
ArgumentNullException headerName is a null reference (Nothing in Visual Basic) or Empty.
ArgumentException headerName contains invalid characters.


The IsRestricted method returns true to indicate that a header is restricted and must be set using properties instead of directly or is set by the system. The restricted headers are:

  • Accept
  • Connection
  • Content-Length
  • Content-Type
  • Date
  • Expect
  • Host
  • If-Modified-Since
  • Range
  • Referer
  • Transfer-Encoding
  • User-Agent


[Visual Basic, C#, C++] The following example checks the IsRestricted property to see if any headers are prohibited from being set.

[Visual Basic] 
Public Shared Sub Main()
        'Create a web request for "".
        Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(""), HttpWebRequest)
        'Get the associated response for the above request.
        Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
        'Get the headers associated with the response.
        Dim myWebHeaderCollection As WebHeaderCollection = myHttpWebResponse.Headers
        'Check if the first response header is restriced.
    dim i as integer
    for i =0 to myWebHeaderCollection.Count-1
            If WebHeaderCollection.IsRestricted(myWebHeaderCollection.AllKeys(i)) Then
                Console.WriteLine("'{0}' is a restricted header", myWebHeaderCollection.AllKeys(i))
                Console.WriteLine("'{0}' is not a restricted header", myWebHeaderCollection.AllKeys(i))
            End If 
    Catch e As WebException
        If e.Status = WebExceptionStatus.ProtocolError Then
            Console.WriteLine("Status Code : {0}", CType(e.Response, HttpWebResponse).StatusCode)
            Console.WriteLine("Status Description : {0}", CType(e.Response, HttpWebResponse).StatusDescription)
            Console.WriteLine("Server : {0}", CType(e.Response, HttpWebResponse).Server)
        End If
    Catch e As Exception
    End Try
End Sub 'Main

try {
    // Create a web request for "".
     HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("");

    // Get the associated response for the above request.
     HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();

    // Get the headers associated with the response.
    WebHeaderCollection myWebHeaderCollection = myHttpWebResponse.Headers;
    for (int i = 0; i < myWebHeaderCollection.Count;i++)    
      // Check if the first response header is restriced.
        Console.WriteLine("'{0}' is a restricted header", myWebHeaderCollection.AllKeys[i]);
        Console.WriteLine("'{0}' is not a restricted header", myWebHeaderCollection.AllKeys[i]);
catch(WebException e) {
    Console.WriteLine("\nWebException is thrown.\nMessage is:" + e.Message);
    if(e.Status == WebExceptionStatus.ProtocolError) {
        Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
        Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
        Console.WriteLine("Server : {0}", ((HttpWebResponse)e.Response).Server);
catch(Exception e) {
    Console.WriteLine("Exception is thrown. Message is :" + e.Message);


try {
   // Create a web request for S"".
   HttpWebRequest* myHttpWebRequest =
      dynamic_cast<HttpWebRequest*> (WebRequest::Create(S""));

   // Get the associated response for the above request.
   HttpWebResponse* myHttpWebResponse =
      dynamic_cast<HttpWebResponse*> (myHttpWebRequest->GetResponse());

   // Get the headers associated with the response.
   WebHeaderCollection* myWebHeaderCollection = myHttpWebResponse->Headers;

   for (int i = 0; i < myWebHeaderCollection->Count;i++) {
      // Check if the first response header is restriced.
      if (WebHeaderCollection::IsRestricted(dynamic_cast<String __gc *>(myWebHeaderCollection->AllKeys->Item[i])))
         Console::WriteLine(S"' {0}' is a restricted header",
         Console::WriteLine(S"' {0}' is not a restricted header",
} catch (WebException* e) {
   Console::WriteLine(S"\nWebException is thrown.\nMessage is: {0}", e->Message);
   if (e->Status == WebExceptionStatus::ProtocolError) {
      Console::WriteLine(S"Status Code : {0}", __box((dynamic_cast<HttpWebResponse*>(e->Response))->StatusCode));
      Console::WriteLine(S"Status Description : {0}", (dynamic_cast<HttpWebResponse*>(e->Response))->StatusDescription);
      Console::WriteLine(S"Server : {0}", (dynamic_cast<HttpWebResponse*>(e->Response))->Server);
} catch (Exception* e) {
   Console::WriteLine(S"Exception is thrown. Message is : {0}", e->Message);

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.


Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

WebHeaderCollection Class | WebHeaderCollection Members | System.Net Namespace