自学内容网 自学内容网

【C#】HTTP中URL编码方式解析

前言:当调用HTTP请求时,通常有get和post两种方式

类型位置内容格式常见用途示例
Query 参数URL 里(? 后)key=value&key=value标识性参数(如分页、过滤条件)GET /api/user?id=1
Form-data请求体中多段分隔(MIME multipart)上传文件、图片、混合数据Content-Type: multipart/form-data
Urlencoded请求体中key=value&key=value表单提交(纯文本字段)Content-Type: application/x-www-form-urlencoded
Raw JSON请求体中JSON 字符串现代 API 请求(REST)Content-Type: application/json

在传参的时候,有些参数可能带一些特殊字符,比如&,"等等,因此需要编码。
编码方式如下:

方法名所属命名空间编码标准常见用途是否限制长度特点
Uri.EscapeDataString()SystemRFC 3986用于单个参数值✅ 有(约 32,766)严格编码规则,推荐用于 query
Uri.EscapeUriString()SystemRFC 3986用于整条 URL✅ 有不会转义 /?#
HttpUtility.UrlEncode()System.WebHTML 表单标准表单、查询字符串⚠️ 无显式限制ASP.NET 中最常用
WebUtility.UrlEncode()System.NetHTML 表单标准通用 URL 编码⚠️ 无显式限制.NET 4.0+,轻量级
HttpUtility.HtmlEncode()System.WebHTML 实体防止 XSS 攻击❌ 无限制用于网页显示
Uri.UnescapeDataString()SystemRFC 3986解码✅ 有EscapeDataString 对应
HttpUtility.UrlDecode()System.WebHTML 表单标准解码❌ 无限制UrlEncode() 配对

其中HttpUtility.UrlEncode() 主要用于参数编码,需要有对应的解码;Uri.EscapeDataString()也是用于参数编码,但是可以不解码,因为大部分服务器端框架(包括 ASP.NET、Web API、MVC)在接收请求时,会自动为你解码 URL 参数。

完结撒花~


原文地址:https://blog.csdn.net/weixin_38792911/article/details/154355209

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!