QueryString与RawUrl不同

时间:2015-10-14 15:42:38

标签: asp.net

我正在尝试将包含空格的参数传递给页面。 当我查看Request.RawUrl时,我看到空格被'%20'取代,但为什么当我查看Request.QueryString空格时会被'+'取代? 我如何解决这个问题,以便Request.QueryString包含空格或至少包含'%20%'? Thansk的帮助!

1 个答案:

答案 0 :(得分:1)

我找到了以下RFC: https://tools.ietf.org/html/rfc1866 它陈述如下:

  

HTML用户代理通过提交
来开始处理表单   具有初始状态字段的文档。允许用户使用   修改字段,受字段类型约束等   用户表示应提交表格(使用提交
  按钮或图像输入),表格数据集按照
处理   它的方法,动作URI和enctype。

     

所有表单的默认编码是`application / x-www-form- urlencoded'。表单数据集在此媒体类型中表示为
  如下:

     
      
  1. 表单字段名称和值将被转义:空格       字符替换为'+',然后保留字符       根据[URL]进行转义;也就是说,非字母数字       字符被'%HH',百分号和两个替换       表示ASCII码的十六进制数字       字符。换行符,如多行文本字段值中所示,       表示为CR LF对,即`%0D%0A'。“...用户可能会编辑字段并请求表单为   提交。此时,假设值为:

         

    名称“John Doe”

         

    性别“男性”

         

    家庭“5”

         

    城市“肯特”

         

    城市“迈阿密”

         

    其他“abc \ ndefk”

         

    昵称“J& D”

         

    然后,用户代理使用URI执行HTTP POST事务   `http://www.w3.org/sample”。消息正文将是(忽略)   换行:

         

    名=约翰+ Doe的安培; gender = male的&安培;家庭= 5&安培;城市=肯特&安培;城市=迈阿密&安培;
      其他= ABC%0D%0Adef&安培;昵称= j的%26D

  2.   

之前的注释是指表格提交。 我相信您使用的.net方法是出于某种原因遵循先前的规则:似乎是按照规则处理查询字符串以处理POST请求的Body(请注意John + Doe参数)。也许您可以指定该方法应该处理GET请求而不是POST请求? ¿请求中的某些内容使得该方法可以作为POST进行处理吗?

此致