2010-02-23 5 views
3

Depuis que j'ai décidé de passer l'ID d'un enregistrement particulier via une chaîne de requête, j'ai crypté l'ID (id=090ed4fe-daec-452d-b025-f664dcc1164d) et attaché sa valeur à l'URL.Context.Request.RawUrl renvoie une adresse URL partiellement codée incorrecte, comment puis-je la réparer?

Comme nous connaissons tous la valeur codée url pour/est% 2f. Ainsi, sur un cas particulier de l'application d'une valeur identifiant (id=090ed4fe-daec-452d-b025-f664dcc1164d), qui a été le rendement chiffré, puis codé une valeur:

M2vaIbPkOqO6lw4jv%2bqE2f%2fhTrK495ny92uPcLBOJBNcMpg1RUme%2fvAo6LyKfdp9e 

Quand je passe la souris sur le lien que j'obtiens:

M2vaIbPkOqO6lw4jv+qE//hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e 

pour la partie "cryptée et encodée" qui est juste. Mais quand j'utilise la propriété Context.Request.RawUrl pour récupérer l'URL que je reçois:

M2vaIbPkOqO6lw4jv+qE/hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e 

Le problème est que supprimer un (1) «/» de la chaîne et donc je ne peux pas déchiffrer la chaîne plus. Par ailleurs, j'ai eu ce module depuis des mois et je n'ai jamais rencontré ce problème. Il se trouve que j'ai deux (2) '/' (2f% 2f) adjacents l'un à l'autre pour la première fois.

S'il vous plaît, y at-il de toute façon je peux faire Context.Request.RawUrl retourner la bonne chaîne et l'arrêter de rayant un (1) '/'?

Répondre

0

Il semble que vous subissiez les effets de URL normalization, voir d'une manière ou d'une autre "Remettre des barres obliques en double". * Il est à noter que votre exemple codé montre %2bqE2f%2f, qui manque un % avant le premier 2f. Est-ce pertinent? Cela dit, j'ai été totalement incapable de reproduire votre problème (avec le cas de test que je montre ci-dessous) alors peut-être que vous pourriez partager plus d'informations?

WebForm1.aspx (sauter les balises de tête/corps/forme de brièveté):

<a href="WebForm1.aspx?id=M2vaIbPkOqO6lw4jv+qE//hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e">Click!</a> 
<a href="WebForm1.aspx?id=M2vaIbPkOqO6lw4jv%2bqE%2f%2fhTrK495ny92uPcLBOJBNcMpg1RUme%2fvAo6LyKfdp9e">Click Encoded!</a> 
<br /> 
<br /> 
<asp:Label runat="server" ID="myLabel"> 
</asp:Label> 

WebForm1.aspx.cs:

protected void Page_Load(object sender, EventArgs e) 
{ 
    myLabel.Text = "<pre>" + Request.RawUrl + "</pre>"; 
} 
Questions connexes