Request.Url是两次URL编码

时间:2016-03-29 09:04:26

标签: c# asp.net encoding webforms

我遇到一个问题,我的网址是两次URL编码。我们有一项功能可以检测访问者访问的网页是否需要SSL。如果是,我们重定向到相同的URL,但使用HTTPS而不是HTTP,反之亦然。我们遇到的问题是当我们在具有特殊字符(捷克字符)的URL上从HTTPS重定向到HTTP时

我将通过示例展示,也许有人可以解释发生了什么。

  1. 我在https://
  2. 页面上
  3. 我点击了一个带有href的链接:“/ cz /ženy/již-brzy-v-prodeji /”(/ cz /%C5%BEeny / ji%C5%BE-brzy-v-prodeji / URL编码)
  4. 在小提琴手中我得到一个302:
  5. 生成的网址变为:http://.../cz/%25C5%25BEeny/ji%25C5%25BE-brzy-v-prodeji/
  6. 生成的网址为404
  7. 如您所见,生成的URL是两次URL编码。我们用于此操作的代码以

    开头
    string newUrl = Request.Url.AbsoluteUri.Replace("https://", "http://");
    

    调试此newUrl已经过两次URL编码,如上面的步骤3所示。

    如果我查看Request.RawUrl,它根本不是URL编码的。知道出了什么问题吗?也许我必须使用RawUrl来自己构建协议等?

    已经进行了进一步的测试,我认为SSL完全没有任何关系。在正常页面上,当我检查Request.Url.AbsolutPath时,它也被编码两次。

0 个答案:

没有答案