什么是 查询字符串?
查询字符串是 URL 中用于向 Web 应用传递数据的部分,出现在问号(?)之后,由以 & 分隔的键值对组成。
快速了解
| 全称 | URL 查询字符串 |
|---|---|
| 创建时间 | 1994 年(RFC 1738 - URL 规范) |
| 规范文档 | 官方规范 |
工作原理
查询字符串是一种通过 URL 向服务器或 Web 应用传递参数的方式。它以问号(?)开始,包含一个或多个用 & 分隔的 key=value 键值对。例如,在 URL 'https://example.com/search?q=hello&lang=zh' 中,查询字符串是 'q=hello&lang=zh'。查询字符串广泛用于搜索参数、分页、过滤、跟踪代码以及在页面之间传递数据。查询字符串中的特殊字符必须进行 URL 编码(百分比编码),例如空格变为 %20 或 +。虽然查询字符串便于创建可收藏的 URL 和 GET 请求,但它有一些限制:在浏览器历史记录中可见、有长度限制(通常 2048 字符),且不应包含敏感数据。对于复杂数据,请考虑使用带有请求体的 POST 请求。
主要特点
- 以 ? 开始,跟在 URL 路径之后
- 键值对用 & 符号分隔
- 特殊字符的值必须进行 URL 编码
- 在浏览器地址栏和历史记录中可见
- 受长度限制(取决于浏览器/服务器)
- 主要用于 HTTP GET 请求
常见用途
- 搜索引擎查询(q=搜索词)
- 分页参数(page=2&limit=10)
- 数据过滤和排序(?sort=date&order=desc)
- 营销分析的 UTM 跟踪代码
- 无需会话即可在页面间传递状态
示例
Loading code...常见问题
查询字符串的最大长度是多少?
HTTP 规范没有官方限制,但浏览器和服务器会施加实际限制。大多数浏览器支持最多 2,048 个字符的 URL,而某些服务器可能接受更长的 URL。为了可靠的跨浏览器兼容性,建议将查询字符串保持在 2,000 个字符以内。
如何处理查询字符串中的特殊字符?
特殊字符必须进行 URL 编码(百分比编码)。例如,空格变为 %20 或 +,& 符号变为 %26,等号变为 %3D。在 JavaScript 中,使用 encodeURIComponent() 对值进行编码,或使用会自动处理编码的 URLSearchParams API。
查询字符串和 URL 片段有什么区别?
查询字符串(? 之后)会发送到服务器用于服务器端处理,而 URL 片段(# 之后)仅在客户端处理,不会发送到服务器。片段通常用于页内导航或单页应用程序中的客户端路由。
查询字符串可以包含数组或嵌套对象吗?
可以,但没有标准格式。常见的约定包括重复键(colors=red&colors=blue)、方括号表示法(colors[]=red&colors[]=blue)或逗号分隔值(colors=red,blue)。对于复杂的数据结构,建议使用带有 JSON 请求体的 POST 请求。
查询字符串对于敏感数据是否安全?
不安全,查询字符串不应包含密码或 API 密钥等敏感数据。它们在浏览器历史记录、服务器日志、referrer 头中可见,并且可能被缓存。对于敏感数据,应使用带有 HTTPS 的 POST 请求、将数据存储在请求头中,或使用安全 cookie。