代码之家  ›  专栏  ›  技术社区  ›  Orson

Context.Request.RawUrl返回一个错误的部分编码的url,我如何修复它?

  •  3
  • Orson  · 技术社区  · 16 年前

    id=090ed4fe-daec-452d-b025-f664dcc1164d )并将其值附加到url。

    我们都知道/is%2f的url编码值。因此,在应用程序的特定实例上,id值( ),它被加密,然后被编码返回一个值:

    M2vaIbPkOqO6lw4jv%2bqE2f%2fhTrK495ny92uPcLBOJBNcMpg1RUme%2fvAo6LyKfdp9e
    

    M2vaIbPkOqO6lw4jv+qE//hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e
    

    对于“加密和编码”部分是正确的。但是当我使用 Context.Request.RawUrl 属性检索我获取的url:

    M2vaIbPkOqO6lw4jv+qE/hTrK495ny92uPcLBOJBNcMpg1RUme/vAo6LyKfdp9e
    

    顺便说一下,我已经有这个模块几个月了,从来没有遇到过这个问题。结果是我第一次有两个(2)'/'(2f%2f)相邻。

    Context.Request.RawUrl

    1 回复  |  直到 15 年前
        1
  •  0
  •   Rob    15 年前

    听起来你很像是受了 URL normalization ,以某种方式参见“删除重复的斜线”。*值得一提的是,您的编码示例显示 %2bqE2f%2f ,其中缺少 % 在第一次之前 2f . 这有关系吗?

    也就是说,我已经完全无法复制您的问题(使用下面显示的测试用例),所以也许您可以共享一些更多的信息?

    <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>
    

    网络表单1.aspx.cs:

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