我正在尝试将包含空格的参数传递给页面。
当我查看Request.RawUrl
时,我看到空格被'%20'取代,但为什么当我查看Request.QueryString
空格时会被'+'取代?
我如何解决这个问题,以便Request.QueryString
包含空格或至少包含'%20%'?
Thansk的帮助!
答案 0 :(得分:1)
我找到了以下RFC: https://tools.ietf.org/html/rfc1866 它陈述如下:
HTML用户代理通过提交
来开始处理表单 具有初始状态字段的文档。允许用户使用 修改字段,受字段类型约束等 用户表示应提交表格(使用提交
按钮或图像输入),表格数据集按照
处理 它的方法,动作URI和enctype。所有表单的默认编码是`application / x-www-form- urlencoded'。表单数据集在此媒体类型中表示为
如下:
- 醇>
表单字段名称和值将被转义:空格 字符替换为'+',然后保留字符 根据[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
之前的注释是指表格提交。 我相信您使用的.net方法是出于某种原因遵循先前的规则:似乎是按照规则处理查询字符串以处理POST请求的Body(请注意John + Doe参数)。也许您可以指定该方法应该处理GET请求而不是POST请求? ¿请求中的某些内容使得该方法可以作为POST进行处理吗?
此致