什么是 查询字符串?

查询字符串是 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 请求

常见用途

  1. 搜索引擎查询(q=搜索词)
  2. 分页参数(page=2&limit=10)
  3. 数据过滤和排序(?sort=date&order=desc)
  4. 营销分析的 UTM 跟踪代码
  5. 无需会话即可在页面间传递状态

示例

loading...
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。

相关工具

相关术语

相关文章