Appendix B: ASP.NET Configuration Elements
Overview
This appendix lists the syntax for each configuration element and describes the attributes and child elements available for that element (where applicable). The names of configuration elements and their attributes are case sensitive and are inwhat is referred to as camel case. In camel case, the entire first word of a name is lowercase, and the initial letter of each additional word in the name is capitalized. For example, the sessionstate configuration element becomessessionState. Remember that if you don’t use camel case with both configuration element names and attribute names, you’ll get an error when you try to access a page in the application.
<trace>
The <trace> element allows you to enable or disable application-wide tracing (see Chapter 14 for more information on this useful feature), as well as set the parameters for the tracing functionality. When tracing is enabled, you can review information about requests received by the Web server with the special URL http://<servername>/<appname>/trace.axd. The <trace> element has the following syntax:
<trace
enabled="true|false"
localOnly="true|false"
pageOutput="true|false"
requestLimit="integer"
traceMode="SortByTime|SortByCategory"/>
Table B-1 describes the <trace> element attributes in more detail.
Attribute | Description | Options |
---|---|---|
enabled | Determines whether application-level tracing is enabled for the application. | true: Turns on application-level tracing. false: Turns off application-level tracing. The default is false. |
localOnly | Determines whether trace information is viewable by computers other than the local Web server. | true: Trace output can be viewed only from the local Web server. false: Trace output is viewable from any machine. The default is true. |
pageOutput | Determines whether trace output is appended to each ASP.NET page in the application or is available only through trace.axd. | true: Trace output is appended to each page within the scope of the configuration file. false: Trace output is available only by browsing the special trace.axd URL. The default is false. |
requestLimit | Determines the number of requests that are stored for review through the trace.axd URL. Once this limit has been reached, the current trace must be cleared by browsing trace.axd to collect information on additional requests. | The default is 10, but the higher this number, the more overhead is involved in tracing. Set this number as small as is feasible. |
traceMode | Determines the sort order of the requests stored. | SortByTime: Sorts trace information by the order in which events are processed. SortByCategory: Sorts trace information alphabetically by category. When used with the Trace.Write method, SortByCategory can be useful for grouping Trace.Write statements using the same category argument. The default is SortByTime. |
<globalization>
The <globalization> element controls globalization settings for ASP.NET applications. This includes the encoding used for requests, responses, and files, as well as settings for specifying the culture to be associated with Web requests and local searches. The <globalization> element has the following syntax:
<globalization
culture="anyvalidculturestring"
fileEncoding="anyvalidencodingstring"
requestEncoding="anyvalidencodingstring"
responseEncoding="anyvalidencodingstring"
uiCulture="anyvalidculturestring"/>
Table B-2 describes the <globalization> element attributes in moredetail.
Attribute | Description | Options |
---|---|---|
culture | Determines the culture (such as language defaults) used to process incoming Web requests. | This attribute must be set to a valid culture string. For a list of valid culture strings, see the Microsoft .NET Framework documentation entry for the System.Globalization.CultureInfo class. |
fileEncoding | Determines the type of character encoding used for parsing ASP.NET application files (.aspx, .asmx, and .asax). | This attribute must be set to a valid encoding string. If this attribute is not included in either Machine.config or Web.config, encoding is based on the machine’s Regional Options setting in Control Panel. |
requestEncoding | Determines the type of character encoding used to process incoming Web requests. | This attribute must be set to a valid encoding string. If this attribute is not included in either Machine.config or Web.config, encoding is based on the machine’s Regional Options setting in Control Panel. The default is utf-8. |
responseEncoding | Determines the type of character encoding used to encode outgoing responses. | This attribute must be set to a valid encoding string. If this attribute is not included in either Machine.config or Web.config, encoding is based on the machine’s Regional Options setting in Control Panel. The default is utf-8. |
uiCulture | Determines the culture (such as language defaults) used to process searches that are culture- or locale-specific. | This attribute must be set to a valid culture string. For a list of valid culture strings, see the .NET Framework documentation entry for the System.Globalization.CultureInfo class. |
<httpRuntime>
The <httpRuntime> element controls several aspects of the ASP.NET HTTP runtime engine. The <httpRuntime> element has the following syntax:
<httpRuntime
appRequestQueueLimit="numberofrequests"
enableKernelOutputCache="true|false"
enableVersionHeader="string"
executionTimeout="seconds"
maxRequestLength="kbytes"
minLocalRequestFreeThreads="numberofthreads"
minFreeThreads="numberofthreads"
useFullyQualifiedRedirectUrl="true|false"/>
There are two basic types of URLs used for creating hyperlinks in Web pages: fully qualified URLs and relative URLs. Fully qualified URLs, also known as absolute URLs, contain all of the information necessary for the browser (or other client program) to locate the resource named in the URL. This includes the protocol moniker being used (ftp://, http://, https://, and so on), the server’s domain name or IP address (on local Windows networks, the machine name can also be used), and the path to the resource. A typical fully qualified URL would look like this:http://localhost/quickstart/aspplus/default.aspx
Relative URLs provide only the information necessary to locate a resource relative to the current document (known as document relative) or current server or domain (known as root relative). A document-relative URL used to link to the previously referenced page from another page in the same virtual directory would look like this:default.aspx
A root-relative URL would look like this:/quickstart/aspplus/default.aspx
Because some controls or applications might not know how to use relative URLs, at times you’ll need to use a fully qualified URL.
Table B-3 describes the <httpRuntime> element attributes in moredetail.
<compilation>
With 10 attributes and two child elements, the <compilation> element is one ofthe more extensive ASP.NET configuration elements and contains settings that determine how ASP.NET compiles code in your Web applications and WebServices. The settings you’ll see most frequently are the debug and defaultLanguage attributes, which are placed in your application’s Web.config file by default when you’re using Microsoft Visual Studio .NET. Other settings, such as the <assemblies> and <namespaces> child elements, are equally important but usually are inherited from the settings in Machine.config, unless overridden by a developer.The <compilation> element has the following syntax:
<compilation
batch="true|false"
batchTimeout="seconds"
debug="true|false"
defaultLanguage="language"
explicit="true|false"
maxBatchSize="numberofpages"
maxBatchGeneratedFileSize="kbytes"
numRecompilesBeforeAppRestart="number"
strict="true|false"
tempdirectory="directory">
<compilers>
<compiler
extension="fileextension"
language="language"
compilerOptions="compileroptions"
type=".NETtype"
warningLevel="number"/>
</compilers>
<assemblies>
<addassembly="assemblyname"/>
<removeassembly="assemblyname"/>
<clear/>
</assemblies>
</compilation>
Table B-4 describes the <compilation> element attributes in moredetail.
<pages>
The <pages> element allows you to set the defaults for the page-level attributes that are more commonly associated with the attributes of the @ Page ASP.NET directive. The settings in this element apply to all pages for which specific attributes of the @ Page directive do not appear. If these attributes do appear in an ASP.NET page, their settings will override those in either the Machine.config or Web.config configuration files. As such, the <pages> element provides a handy way of configuring the SessionState, ViewState, and other settings at an application or subfolder level, giving you a great deal of control over your application.The <pages> element has the following syntax:
<pages
autoEventWireup="true|false"
buffer="true|false"
enableSessionState="true|false|ReadOnly"
enableViewState="true|false"
enableViewStateMac="true|false"
pageBaseType="typename,assembly"
smartNavigation="true|false"
userControlBaseType="typename"
validateRequest="true|false"/>
Table B-5 describes the <pages> element attributes in more detail.
<customErrors>
The <customErrors> element allows you to customize how your ASP.NET application responds to error conditions. In this element, you can specify whether the raw error messages generated by ASP.NET should be visible to local or remote clients, or whether to redirect the client to either a custom error page or a page specific to the error that occurred (based on the status code of the error). The <customErrors> element supports one child element, <error>, and has the following syntax:
<customErrors
defaultRedirect="url"
mode="on|off|RemoteOnly">
<error
redirect="url"
statusCode="statuscode"/>
</customErrors>
Table B-6 describes the <customErrors> element attributes in more detail.
<authentication>
The <authentication> element controls configuration of authentication in ASP.NET. You can choose from one of three authentication methods, and you can set appropriate parameters for the method you choose or you can choose no authentication at all. The <authentication> element supports two child elements: <forms> and <passport>. Additionally, the <forms> element supports one child element, <credentials>, which in turn supports one child element, <user>, as shown in the following example:
<authentication
mode="Windows|Forms|Passport|None">
<forms
loginUrl="url"
name="name"
path="/"
protection="All|None|Encryption|Validation"
requireSSL="true|false"
slidingExpiration="true|false"
timeout="number">
<credentials
passwordFormat="Clear|MD5|SHA1">
<user
name="username"
password="password"/>
</credentials>
</forms>
<passport
redirectUrl="url"/>
</authentication>
Table B-7 describes the <authentication> element attributes in more detail.
Element | Attribute | Description | Options |
---|---|---|---|
<authentication> | Determines how ASP.NET authentication is handled. | ||
mode | Determines the authentication mode to be used. Authentication is discussed in greater detail in Chapter 6. | Windows: ASP.NET will use Windows authentication by default. Works with IIS’s Basic, Digest, NTLM, or Certificate- based authentication methods. Forms: ASP.NET will use Forms-based authentication, which provides basic support for “roll-your-own” security scenarios, by default. Passport: ASP.NET will use Microsoft Passport as the default authentication method. None: No authentication will be performed by ASP.NET. | |
<forms> | Determines the parameters associated with Forms-based authentication. | ||
loginUrl | Determines the URL to which a user is redirected if he doesn’t have a valid authentication cookie. | This can be any page in your ASP.NET application that allows a user to log in. The default is login.aspx. | |
name | Determines the name of the cookie used for authenticating a user. | Default is .ASPXAUTH. | |
path | Determines the path to set for the authentication cookie. | Default is /. This is to prevent the possibility of missing cookies because of browser case sensitivity with respect to URL paths and cookies. | |
protection | Determines the methods used to protect the authentication cookie from being compromised. Your choice of which method to use, or whether to use any at all, will depend on your security needs vs. the amount of resources you’re willing to devote to security. Generally, the higher the level of security, the greater the performance overhead. | All (default): Both encryption and data validation will be used to protect the cookie. This is the recommended setting. Encryption: The authentication cookie will be encrypted, but will not be validated. This leaves the cookie vulnerable to certain types of attacks. Validation: The authentication cookie’s contents will be validated to ensure that they haven’t been changed between the browser and the server. None: Neither encryption nor validation is used. Not recommended. | |
requireSSL | Determines whether the authentication cookie will be sent with requests that do not use SSL. New for version 1.1. | If set to true, the forms authentication cookie will not be sent over a non-SSL connection. The default is false. | |
slidingExpiration | Determines whether each request in a given session resets the expiration of the authentication cookie. New for version 1.1. | The default is false. | |
Timeout | Determines the amount of time, in minutes, until the authentication cookie expires. | Default is 30. You should set this value to the minimum amount that will allow users to use your site effectively. If you use persistent cookies with forms authentication, they will not time out. | |
<credentials> | In conjunction with the <user> child element, allows you to define credentials to authenticate against within a configuration file. | If you use this method to store credentials in a Web.config file within your application scope, and your application is compromised, it might be possible for intruders to gain the passwords stored there, even if they’re encrypted. Remember that no encryption method is perfect. | |
PasswordFormat | Determines the encryption used for stored passwords. | Clear: No encryption is used. Not recommended. MD5: Passwords are encrypted using the MD5 hash algorithm. SHA1: Passwords are encrypted using the SHA1 hash algorithm. | |
<user> | Determines the username and password of a single user. Use one <user> child element for each set of credentials you want to store in the configuration file. | ||
name | Specifies the username of the user to authenticate against. | ||
password | Specifies the password of the user to authenticate against. | This value should be an encrypted version of the password created with the hash algorithm specified by the passwordFormat attribute of the <credentials> tag. | |
<passport> | Child element used to set the parameters for Microsoft Passport– based authentication. | ||
redirectUrl | Determines the URL where the user will be redirected if he or she has not been authenticated. |
<identity>
By default, requests made by ASP.NET applications for resources requiring authentication, such as files secured by NT Access Controls Lists (ACLs), aremade in the context of either the IUSR_MACHINENAME or IWAM_MACHINENAME accounts, depending on whether the application isconfigured to run in-process or out-of-process relative to IIS. The <identity> element allows ASP.NET applications to use impersonation, in which an application takes on the security context of the user making a request, or of a specified account. The <identity> element has the following syntax:
<identity
impersonate="true|false"
userName="username"
password="password"/>
Table B-8 describes the <identity> element attributes in more detail.
Attribute | Description | Options |
---|---|---|
impersonate | Determines whether ASP.NET applications will use impersonation. | true: Enables impersonation of security accounts by ASP.NET applications. false: Disables impersonation of security accounts by ASP.NET applications. |
userName | Specifies a user account that the affected ASP.NET application will impersonate. | Any valid user account. You should ensure that the account that you choose has access to only the desired resources. For example, as a rule, it is not a good idea to have an ASP.NET application impersonate an account in the Administrators group. If omitted, ASP.NET will impersonate the account of the logged on user (as provided by IIS). |
password | Specifies the password for the account named in the userName attribute. |
<authorization>
The <authorization> element lets you specify which accounts or roles (groups) are authorized to access resources within the scope of the configuration file. The <authorization> element supports two child elements, <allow> and <deny>, both of which have three attributes. The <authorization> element has the following syntax:
<authorization>
<allow
users="userlist"
roles="rolelist"
verbs="verblist"/>
<deny
users="userlist"
roles="rolelist"
verbs="verblist"/>
</authorization>
Table B-9 describes the <authorization> element attributes in more detail.
Element | Attribute | Description | Options |
---|---|---|---|
<authorization> | Determines authorization settings for an application or directory. Contains one or more <allow> or <deny> child elements. | ||
<allow> | Allows access to resources based on user account, group membership, or HTTP request method. | ||
users | List of users (NT user accounts) granted access to the resource(s). | This attribute takes a comma-delimited list. Access to anonymous users is allowed using the ? wildcard, and access to everyone is allowed using the * wildcard. | |
roles | List of roles (NT groups) granted access to the resource(s). | This attribute takes a comma-delimited list. | |
verbs | List of HTTP verbs (GET, POST, etc.) granted access to the resource(s). | This attribute takes a comma-delimited list. Verbs available are GET, HEAD, POST, and DEBUG. | |
<deny> | Denies access to resources based on user account, group membership, or HTTP request method. | ||
users | List of users (NT user accounts) denied access to the resource(s). | This attribute takes a comma-delimited list. Access to anonymous users is denied using the ? wildcard, and access to everyone is denied using the * wildcard. | |
roles | List of roles (NT groups) denied access to the resource(s). | This attribute takes a comma-delimited list. | |
verbs | List of HTTP verbs (GET, POST, etc.) denied access to the resource(s). | This attribute takes a comma-delimited list. Verbs available are GET, HEAD, POST, and DEBUG. |
<machineKey>
The <machineKey> element allows you to specify the keys used for encryption and decryption of cookie data in Forms-based authentication. This element can be used at the machine level through Machine.config, as well as at the site and application levels through Web.config files, but it cannot be used at the subdirectory level. The <machineKey> element has the following syntax:
<machineKey
decryptionKey="AutoGenerate|value[,IsolateApps] "
validation="AutoGenerate|value[,IsolateApps] "
validationKey="3DES|MD5|SHA1"/>
Table B-10 describes the <machineKey> element attributes in moredetail.
<securityPolicy>
The <securityPolicy> element allows you to specify one of several named security policies, or a custom policy, for code-access security based on the name and policyFile attributes of its <trustLevel> child element. The <trust> element, described in the next section, specifies which of the named policies is implemented for a given site or application. The <securityPolicy> element supports one child element, <trustLevel>, with two attributes, and has the following syntax:
<securityPolicy>
<trustLevel
name="value"
policyFile="value"/>
</securityPolicy>
Table B-11 describes the <securityPolicy> element attributes in moredetail.
Element | Attribute | Description | Options |
---|---|---|---|
<securityPolicy> | Determines the available named security policies for sites and/or applications. | ||
<trustLevel> | Each <trustLevel> child element sets up an available named policy based on its name and policyFile attributes. | ||
name | Specifies the name to use for the policy. | The name specified by this attribute is also used by the <trust> element to implement the named policy. | |
policyFile | Specifies the file name of the file that contains the code-access security settings to be used under the named policy. | The file name specified by this attribute is relative to the location of the Machine.config file. |
<trust>
The <trust> element is used to implement one of the named security policies created by the <securityPolicy> element. This element can be used at the machine level through Machine.config, as well as at the site and application levels through Web.config files. However, it can’t be used at the subdirectory level. The<trust> element has the following syntax:
<trust
level="Full|High|Low|None|customname"
originUrl="url"/>
Table B-12 describes the <trust> element attributes in moredetail.
Attribute | Description | Options |
---|---|---|
level | Determines the applicable trust level, based on a named security policy. | Full: Code-access security is based on the Full named policy set up by default in Machine.config. High: Code-access security is based on the High named policy set up by default in Machine.config. Low: Code-access security is based on the Low named policy set up by default in Machine.config. None: Code-access security is based on the None named policy set up by default in Machine.config. custom name: Code-access security is based on a custom named policy set up in either Machine.config or a Web.config file at the site or application level. |
originUrl | Specifies the origin URL for an application. | Optional: This attribute can be used to support permissions for Socket and WebRequest requests that allow connectivity to the origin host. |
<sessionState>
The <sessionState> element is used to configure the Session State HttpModule, including the type of state management to be used (in-process, out-of-process, or Microsoft SQL Server), the default session timeout, and whether to use cookies for associating requests with user sessions. The <sessionState> element has the following syntax:
<sessionState
stateConnectionString="IPaddress:portnumber"
cookieless="true|false"
mode="Off|Inproc|StateServer|SQLServer"
sqlConnectionString="sqlconnectionstring"
timeout="numberofminutes"/>
Table B-13 describes the <sessionState> element attributes in more detail.
Attribute | Description | Options |
---|---|---|
stateConnectionString | Specifies the server and port number to connect to when the mode attribute is set to StateServer. | This attribute is required when the mode is set to StateServer. The default is tcpip=127.0.0.1:42424. |
cookieless | Determines whether user sessions are mapped to requests by using cookies or by adding a user’s SessionID to the URL string for requests by that user. | true: SessionIDs are added to request URLs, and cookies are not used. false: Cookies are used to map user requests to sessions. The default is false. |
mode | Determines the type of session state management that applications will use. | Off: Session state is disabled. Inproc: Session state is stored in- process with the application, as in classic ASP. StateServer: Session state is managed by an out-of-process NT Service, allowing multiple servers in a Web farm to share asingle state store. SQLServer: Session state is managed by SQL Server database, allowing multiple servers in a Web farm to share a single state store. This mode has the added advantage of providing persistent state storage in the event of a Web server crash. The default is InProc. |
sqlConnectionString | Specifies the connection string used to connect to a SQL Server database where state information is stored. | This attribute is required when the mode is set to SQLServer. |
timeout | Specifies the amount of time, in minutes, before the user’s session expires. | Like the classic ASP Session.Timeout property, this attribute uses sliding expiration. Each request by the user resets the amount of time before his session expires. The default is 20 minutes. |
<httpHandlers>
The <httpHandlers> element allows you to assign requests of certain types or for certain resources to specific handler classes. For example, in Machine.config, the handling of ASP.NET pages (requests with the .aspx extension) is assigned to the System.Web.UI.PageHandlerFactory class. The <httpHandlers> element can also be used to prevent HTTP access to certain types of files by assigning them to the System.Web.HttpForbiddenHandler class, as is done by default for configuration files (*.config) and source files (*.vb and *.cs, for example).The <httpHandlers> element supports three child elements, <add>, <remove>, and <clear>, and has the following syntax:
<httpHandlers>
<add
path="path"
type="type,assemblyname"
validate="true|false"
verb="verblist"/>
<remove
path="path"
verb="verblist"/>
<clear/>
</httpHandlers>
Table B-14 describes the <httpHandlers> element attributes in more detail.
<httpModules>
HttpModules are classes that implement the IHttpModule interface and are used to provide functionality to ASP.NET applications. For example, by default, the Machine.config file adds HttpModules for output caching, session-state management, authentication, and authorization. The <httpModules> element allows you to add HttpModules to ASP.NET applications.The <httpModules> element supports three child elements, <add>, <remove>, and <clear>, and has the following syntax:
<httpModules>
<add
name="name"
type="classname.assemblyname"/>
<remove
name="name"
<clear/>
</httpModules>
Table B-15 describes the <httpModules> element attributes in more detail.
Element | Attribute | Description | Options |
---|---|---|---|
<httpModules> | Determines the httpModules available for ASP.NET applications within the scope of the configuration file. | ||
<add> | Each <add> child element adds a specified httpModule. | ||
name | Specifies a name that can be used by ASP.NET applications to refer to the module identified by the type attribute. | ||
type | Specifies the .NET class that implements the desired httpModule. | This is a string containing a comma-separated list with the class name and other information, such as version and public key, that enables ASP.NET to locate the class in either the application’s bin directory or the global assembly cache. | |
<remove> | Removes an httpModule, based on the name and type attributes specified. | ||
name | Specifies the name of the httpModule to remove. | This attribute must exactly match the name attribute of an httpModule added by a previous <add> child element. | |
<clear> | Removes all httpModules, either those configured by the current file or those inherited from parent configuration files. |
<processModel>
The <processModel> element configures settings related to how ASP.NET applications run, and it provides access to a number of features geared towards improving the availability of applications. These include automatic restart (which can be configured based on elapsed time or number of requests), allowed memory size, and Web garden, in which applications can be associated with specific processors in a multiprocessor machine. Note that when ASP.NET is running under IIS 6.0 in native mode, the settings in the <processModel> element are ignored in favor of the settings configured by the IIS administrative UI.The <processModel> element has the following syntax:
<processModel
clientConnectedCheck="timeinhh:mm:ssformat"
comAuthenticationLevel="Default|None|Connect|Call|Pkt|
PktIntegrity|PktPrivacy"
comImpersonationLevel="Default|Anonymous|Identify|Impersonate|
Delegate"
cpuMask="number"
enable="true|false"
idleTimeout="time"
logLevel="All|None|Errors"
maxIoThreads="number"
maxWorkerThreads="number"
memoryLimit="percent"
pingFrequency="hh:mm:ss"
pingTimeout="hh:mm:ss"
requestLimit="number"
requestQueueLimit="Infinite|number"
responseDeadlockInterval="Infinite|hh:mm:ss"
responseRestartDeadlockInterval="Infinite|hh:mm:ss"
restartQueueLimit="Infinite|number"
serverErrorMessageFile="filename"
shutdownTimeout="time"
timeout="time"
webGarden="true|false"
username="username"
password="password"/>
Table B-16 describes the <processModel> element attributes in more detail.
<webControls>
The <webControls> element allows you to specify the location of script files used by client-side implementations of ASP.NET Server Controls, such as the validation controls. The <webControls> element has the following syntax:
<webControls
clientScriptsLocation="path"/>
Table B-17 describes the <webControls> element attribute in more detail.
Attribute | Description | Options |
---|---|---|
clientScriptsLocation | Determines where ASP.NET will look for client-side scripts for use with ASP.NET Server Controls. | This attribute is relative to the root Web of the Web server. |
<clientTarget>
The <clientTarget> element allows you to set up aliases to be used by the ClientTarget property of the Page class. The <clientTarget> element supports one child element, <add>, and has the following syntax:
<clientTarget>
<add
alias="aliasname"
userAgent="true|false"/>
<clear/>
<remove
alias="aliasname"/>
</clientTarget>
Table B-18 describes the <clientTarget> element attributes in more detail.
Element | Attribute | Description |
---|---|---|
<clientTarget> | Creates aliases for specific browser user agents that can then be specified from the Page.ClientTarget property. | |
<add> | Maps a specific user agent string to an alias name. | |
alias | Specifies the name of the alias. | |
userAgent | Specifies the browser user agent that the alias looks for. | |
<clear> | Removes all aliases added (or inherited) by the current Web.config file. | |
<remove> | alias | Removes the specified alias added (or inherited) by the current Web.config file. |
<browserCaps>
The <browserCaps> element contains settings used by ASP.NET to provide the functionality of the browser capabilities component (accessible via the Request.Browser property). It provides filtering processes that allow the browser capabilities component to populate its properties with information on the capabilities of a user’s browser, based on the information contained in the user agent string passed by the browser. The <browserCaps> element supports three child elements, <result>, <use>, and <filter>. The <filter> element supports one child element, <case>. The <browserCaps> element has the following syntax:
<browserCaps>
<resulttype="System.Web.HttpBrowserCapabilities"/>
<usevar="HTTP_USER_AGENT"/>
listofdefaultpropertyvalues
<filter>
<case
match="string1|string2|stringN">
property=value
</case>
</filter>
</browserCaps>
Table B-19 describes the <browserCaps> element attributes in more detail.