HttpRequest Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Permet à ASP.NET de lire les valeurs HTTP envoyées par un client dans le cadre d'une requête web.
public ref class HttpRequest sealed
public sealed class HttpRequest
type HttpRequest = class
Public NotInheritable Class HttpRequest
- Héritage
-
HttpRequest
Exemples
Les exemples suivants accèdent à l’instance HttpRequest de la requête actuelle à l’aide de la Request propriété de la Page classe .
Vous pouvez utiliser la syntaxe simplifiée pour accéder aux données à partir des QueryStringcollections , Form, Cookiesou ServerVariables . Vous pouvez écrire Request["key"]
.
Le premier exemple montre comment récupérer une valeur de chaîne de requête lors du chargement d’une page.
public partial class AddToCart : Page
{
protected void Page_Load(object sender, EventArgs e)
{
string rawId = Request["ProductID"];
int productId;
if (!String.IsNullOrEmpty(rawId) && int.TryParse(rawId, out productId))
{
using (ShoppingCartActions usersShoppingCart = new ShoppingCartActions())
{
usersShoppingCart.AddToCart(productId);
}
}
else
{
throw new Exception("Tried to call AddToCart.aspx without setting a ProductId.");
}
Response.Redirect("ShoppingCart.aspx");
}
}
Public Class AddToCart
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim rawId = Request("ProductID")
Dim productId As Integer
If Not String.IsNullOrEmpty(rawId) And Integer.TryParse(rawId, productId) Then
Using usersShoppingCart As New ShoppingCartActions()
usersShoppingCart.AddToCart(productId)
End Using
Else
Throw New Exception("Tried to call AddToCart.aspx without setting a ProductId.")
End If
Response.Redirect("ShoppingCart.aspx")
End Sub
End Class
L’exemple suivant montre comment vérifier si la requête est authentifiée et récupérer l’URL brute.
public partial class RestrictedPage : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Request.IsAuthenticated)
{
var rawUrl = Request.RawUrl;
Response.Redirect("/Account/Login?ru=" + Server.HtmlEncode(rawUrl));
}
}
}
Public Class RestrictedPage
Inherits Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not Request.IsAuthenticated Then
Dim rawUrl = Request.RawUrl
Response.Redirect("/Account/Login?ru=" + Server.HtmlEncode(rawUrl))
End If
End Sub
End Class
Un projet de site Web Visual Studio avec du code source est disponible pour accompagner cette rubrique : Télécharger.
Cet exemple utilise la StreamWriter classe pour écrire les valeurs de plusieurs HttpRequest propriétés de classe dans un fichier. Pour les propriétés de type chaîne, les valeurs sont encodées au format HTML à mesure qu’elles sont écrites dans le fichier. Les propriétés qui représentent une collection sont bouclé et chaque paire clé/valeur qu’elles contiennent est écrite dans le fichier.
Important
Cet exemple comprend une zone de texte qui accepte une entrée d'utilisateur, ce qui constitue une menace potentielle pour la sécurité. Par défaut, les pages web ASP.NET vérifient que l’entrée d’utilisateur n’inclut pas de script ou d’éléments HTML. Pour plus d’informations, consultez Vue d’ensemble des attaques de script.
<%@ Page Language="C#" %>
<%@ import Namespace="System.Threading" %>
<%@ import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
/* NOTE: To use this sample, create a c:\temp\CS folder,
* add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
* in IIS 6.x NETWORK SERVICE), and give it write permissions
* to the folder.*/
private const string INFO_DIR = @"c:\temp\CS\RequestDetails";
public static int requestCount;
private void Page_Load(object sender, System.EventArgs e)
{
// Create a variable to use when iterating
// through the UserLanguages property.
int langCount;
int requestNumber = Interlocked.Increment(ref requestCount);
// Create the file to contain information about the request.
string strFilePath = INFO_DIR + requestNumber.ToString() + @".txt";
StreamWriter sw = File.CreateText(strFilePath);
try
{
// <snippet2>
// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()));
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath));
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.FilePath));
sw.WriteLine(Server.HtmlEncode(Request.Path));
// </snippet2>
// <snippet3>
// Iterate through the Form collection and write
// the values to the file with HTML encoding.
// String[] formArray = Request.Form.AllKeys;
foreach (string s in Request.Form)
{
sw.WriteLine("Form: " + Server.HtmlEncode(s));
}
// </snippet3>
// <snippet4>
// Write the PathInfo property value
// or a string if it is empty.
if (Request.PathInfo == String.Empty)
{
sw.WriteLine("The PathInfo property contains no information.");
}
else
{
sw.WriteLine(Server.HtmlEncode(Request.PathInfo));
}
// </snippet4>
// <snippet5>
// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath));
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath));
sw.WriteLine(Server.HtmlEncode(Request.RawUrl));
// </snippet5>
// <snippet6>
// Write a message to the file dependent upon
// the value of the TotalBytes property.
if (Request.TotalBytes > 1000)
{
sw.WriteLine("The request is 1KB or greater");
}
else
{
sw.WriteLine("The request is less than 1KB");
}
// </snippet6>
// <snippet7>
// Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType));
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress));
sw.WriteLine(Server.HtmlEncode(Request.UserHostName));
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod));
// </snippet7>
// <snippet8>
// Iterate through the UserLanguages collection and
// write its HTML encoded values to the file.
for (langCount=0; langCount < Request.UserLanguages.Length; langCount++)
{
sw.WriteLine(@"User Language " + langCount +": " + Server.HtmlEncode(Request.UserLanguages[langCount]));
}
// </snippet8>
}
finally
{
// Close the stream to the file.
sw.Close();
}
lblInfoSent.Text = "Information about this request has been sent to a file.";
}
private void btnSendInfo_Click(object sender, System.EventArgs e)
{
lblInfoSent.Text = "Hello, " + Server.HtmlEncode(txtBoxName.Text) +
". You have created a new request info file.";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<p>
</p>
<p>
Enter your name here:
<asp:TextBox id="txtBoxName" runat="server"></asp:TextBox>
</p>
<p>
<asp:Button id="btnSendInfo" onclick="btnSendInfo_Click" runat="server" Text="Click Here"></asp:Button>
</p>
<p>
<asp:Label id="lblInfoSent" runat="server"></asp:Label>
</p>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ import Namespace="System.Threading" %>
<%@ import Namespace="System.IO" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
' NOTE: To use this sample, create a c:\temp\CS folder,
' add the ASP.NET account (in IIS 5.x <machinename>\ASPNET,
' in IIS 6.x NETWORK SERVICE), and give it write permissions
' to the folder.
Private Const INFO_DIR As String = "c:\temp\VB\RequestDetails"
Public Shared requestCount As Integer
Private Sub Page_Load(sender As Object, e As System.EventArgs)
' Create a variable to use when iterating
' through the UserLanguages property.
Dim langCount As Integer
' Create a counter to name the file.
Dim requestNumber As Integer = _
Interlocked.Increment(requestCount)
' Create the file to contain information about the request.
Dim strFilePath As String = INFO_DIR & requestNumber.ToString() & ".txt"
Dim sw As StreamWriter = File.CreateText(strFilePath)
Try
' <snippet2>
' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(DateTime.Now.ToString()))
sw.WriteLine(Server.HtmlEncode(Request.CurrentExecutionFilePath))
sw.WriteLine(Server.HtmlEncode(Request.ApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.FilePath))
sw.WriteLine(Server.HtmlEncode(Request.Path))
' </snippet2>
' <snippet3>
' Iterate through the Form collection and write
' the values to the file with HTML encoding.
For Each s As String In Request.Form
sw.WriteLine("Form: " & Server.HtmlEncode(s))
Next s
' </snippet3>
' <snippet4>
' Write the PathInfo property value
' or a string if it is empty.
If Request.PathInfo = String.Empty Then
sw.WriteLine("The PathInfo property contains no information.")
Else
sw.WriteLine(Server.HtmlEncode(Request.PathInfo))
End If
' </snippet4>
' <snippet5>
' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.PhysicalApplicationPath))
sw.WriteLine(Server.HtmlEncode(Request.PhysicalPath))
sw.WriteLine(Server.HtmlEncode(Request.RawUrl))
' </snippet5>
' <snippet6>
' Write a message to the file dependent upon
' the value of the TotalBytes property.
If Request.TotalBytes > 1000 Then
sw.WriteLine("The request is 1KB or greater")
Else
sw.WriteLine("The request is less than 1KB")
End If
' </snippet6>
' <snippet7>
' Write request information to the file with HTML encoding.
sw.WriteLine(Server.HtmlEncode(Request.RequestType))
sw.WriteLine(Server.HtmlEncode(Request.UserHostAddress))
sw.WriteLine(Server.HtmlEncode(Request.UserHostName))
sw.WriteLine(Server.HtmlEncode(Request.HttpMethod))
' </snippet7>
' <snippet8>
' Iterate through the UserLanguages collection and
' write its HTML encoded values to the file.
For langCount = 0 To Request.UserLanguages.Length - 1
sw.WriteLine("User Language " & langCount.ToString() & _
": " & Server.HtmlEncode( _
Request.UserLanguages(langCount)))
Next
' </snippet8>
Finally
' Close the stream to the file.
sw.Close()
End Try
lblInfoSent.Text = _
"Information about this request has been sent to a file."
End Sub 'Page_Load
Private Sub btnSendInfo_Click(sender As Object, e As System.EventArgs)
lblInfoSent.Text = _
"Hello, " & Server.HtmlEncode(txtBoxName.Text) & _
". You have created a new request info file."
End Sub 'btnSendInfo_Click
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>ASP.NET Example</title>
</head>
<body>
<form id="form1" runat="server">
<p>
</p>
<p>
Enter your name here:
<asp:TextBox id="txtBoxName" runat="server"></asp:TextBox>
</p>
<p>
<asp:Button id="btnSendInfo" onclick="btnSendInfo_Click" runat="server" Text="Click Here"></asp:Button>
</p>
<p>
<asp:Label id="lblInfoSent" runat="server"></asp:Label>
</p>
</form>
</body>
</html>
Remarques
Les méthodes et les propriétés de la HttpRequest classe sont exposées via les Request
propriétés des HttpApplicationclasses , HttpContext, Pageet UserControl .
Pour accéder aux données des QueryStringcollections , Form, Cookiesou ServerVariables , vous pouvez écrire Request["key"]
, comme indiqué dans l’exemple de la QueryString propriété .
Notes
La prise en charge d’Unicode pour HttpRequest les membres de classe nécessite IIS version 6.0 ou ultérieure.
Constructeurs
HttpRequest(String, String, String) |
Initialise un objet HttpRequest. |
Propriétés
AcceptTypes |
Obtient un tableau de chaînes contenant les types MIME pris en charge par le client. |
AnonymousID |
Obtient l'identificateur anonyme de l'utilisateur, s'il existe. |
ApplicationPath |
Obtient le chemin d’accès racine virtuel de l’application ASP.NET sur le serveur. |
AppRelativeCurrentExecutionFilePath |
Obtient le chemin d’accès virtuel de la racine de l’application et le rend relatif en utilisant un tilde (~) à la racine de l’application (par exemple « ~/page.aspx »). |
Browser |
Obtient ou définit des informations sur les fonctionnalités de navigation du client demandeur. |
ClientCertificate |
Obtient le certificat de sécurité du client pour la requête actuelle. |
ContentEncoding |
Obtient ou définit le jeu de caractères du corps de l'entité. |
ContentLength |
Spécifie la longueur en octets du contenu envoyé par le client. |
ContentType |
Obtient ou définit le type de contenu MIME de la requête entrante. |
Cookies |
Obtient une collection de cookies envoyée par le client. |
CurrentExecutionFilePath |
Obtient le chemin d'accès virtuel de la requête actuelle. |
CurrentExecutionFilePathExtension |
Obtient l'extension du nom de fichier spécifié dans la propriété CurrentExecutionFilePath. |
FilePath |
Obtient le chemin d'accès virtuel de la requête actuelle. |
Files |
Obtient la collection des fichiers téléchargés par le client (format Multipart MIME). |
Filter |
Obtient ou définit le filtre à utiliser lors de la lecture du flux d'entrée actif. |
Form |
Obtient une collection de variables de formulaire. |
Headers |
Obtient une collection d’en-têtes HTTP. |
HttpChannelBinding |
Obtient l'objet ChannelBinding de l'instance actuelle de HttpWorkerRequest. |
HttpMethod |
Obtient la méthode de transfert de données HTTP (par exemple : |
InputStream |
Obtient le contenu du corps de l'entité HTTP entrante. |
IsAuthenticated |
Obtient une valeur indiquant si la requête a été authentifiée. |
IsLocal |
Obtient une valeur indiquant si la requête provient d'un ordinateur local. |
IsSecureConnection |
Obtient une valeur indiquant si la connexion HTTP est sécurisée (c'est-à-dire de type HTTPS). |
Item[String] |
Obtient l'objet spécifié des collections QueryString, Form, Cookies ou ServerVariables. |
LogonUserIdentity |
Obtient le type WindowsIdentity pour l'utilisateur actuel. |
Params |
Obtient une collection combinée d'éléments QueryString, Form, Cookies et ServerVariables. |
Path |
Obtient le chemin d'accès virtuel de la requête actuelle. |
PathInfo |
Obtient des informations supplémentaires sur le chemin d’accès d’une ressource avec extension URL. |
PhysicalApplicationPath |
Obtient le chemin d'accès physique, dans le système de fichiers, du répertoire racine de l'application serveur en cours d'exécution. |
PhysicalPath |
Obtient le chemin d'accès physique, dans le système de fichiers, correspondant à l'URL demandée. |
QueryString |
Obtient la collection des variables de chaîne de requête HTTP. |
RawUrl |
Obtient l'URL brute de la requête actuelle. |
ReadEntityBodyMode |
Obtient une valeur qui indique si le corps d'entité de requête a été lu et, si tel est le cas, comment il a été lu. |
RequestContext |
Obtient l'instance RequestContext de la requête actuelle. |
RequestType |
Obtient ou définit la méthode de transfert de données HTTP ( |
ServerVariables |
Obtient une collection des variables de serveur web. |
TimedOutToken |
Obtient un objet CancellationToken dépassé lors de l'expiration d'une requête. |
TlsTokenBindingInfo |
Obtient les informations de liaison de jeton TLS. La propriété permet aux applications de récupérer des informations de jeton dans les requêtes HTTP entrantes pour une authentification améliorée. |
TotalBytes |
Obtient le nombre d'octets dans le flux d'entrée actuel. |
Unvalidated |
Obtient les valeurs de requête HTTP sans déclencher la validation de requête. |
Url |
Obtient des informations sur l'URL de la requête actuelle. |
UrlReferrer |
Obtient des informations sur l'URL de la précédente requête du client qui était liée à l'URL actuelle. |
UserAgent |
Obtient la chaîne d’agent utilisateur brute du navigateur client qui a été fournie. Notez qu’elle peut être Null. |
UserHostAddress |
Obtient l'adresse d'hôte IP du client distant. |
UserHostName |
Obtient le nom DNS du client distant. |
UserLanguages |
Obtient un tableau de chaînes trié contenant les préférences de langue du client. |
Méthodes
Abort() |
Termine de force la connexion TCP sous-jacente, entraînant l'échec des E/S en attente. Vous pouvez utiliser cette méthode en réponse à une attaque par un client HTTP malveillant. |
BinaryRead(Int32) |
Exécute une lecture binaire d'un nombre spécifié d'octets du flux d'entrée actif. |
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetBufferedInputStream() |
Obtient un objet Stream qui permet de lire le corps de l'entité HTTP entrante. |
GetBufferlessInputStream() |
Obtient un objet Stream qui permet de lire le corps de l'entité HTTP entrante. |
GetBufferlessInputStream(Boolean) |
Obtient un objet Stream qui peut être utilisé pour lire le corps d'entité HTTP entrant, en désactivant éventuellement la longueur maximale des requêtes définie dans la propriété MaxRequestLength. |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
InsertEntityBody() |
Fournit à IIS une copie du corps d'entité de la requête HTTP. |
InsertEntityBody(Byte[], Int32, Int32) |
Fournit à IIS une copie du corps d'entité de la requête HTTP et des informations à propos de l'objet d'entité de la requête. |
MapImageCoordinates(String) |
Mappe un paramètre de formulaire avec champ image entrant aux valeurs de coordonnées x/y appropriées. |
MapPath(String) |
Mappe le chemin d'accès virtuel spécifié à un chemin d'accès physique. |
MapPath(String, String, Boolean) |
Mappe le chemin d'accès virtuel spécifié à un chemin d'accès physique. |
MapRawImageCoordinates(String) |
Mappe un paramètre de formulaire avec champ image entrant aux valeurs de coordonnées x/y appropriées. |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
SaveAs(String, Boolean) |
Enregistre une requête HTTP sur disque. |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |
ValidateInput() |
Génère la validation des collections accessibles via les propriétés Cookies, Form et QueryString. |