You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在POST请求中发送&等特殊字符?

如何通过POST请求发送&之类的特殊字符?

其实这个问题的核心在于,&这类字符在HTTP的表单提交(application/x-www-form-urlencoded格式)里是参数分隔符,直接发送的话,后端会把它当成两个参数的分界,导致你的参数值被截断或者解析错误。下面给你几种靠谱的解决办法:

1. 先做URL编码(百分编码)

这是最通用的标准做法,把特殊字符转换成对应的百分编码格式:

  • & 对应 %26
  • 其他常见特殊字符比如=是%3D,+是%2B

举个例子,如果你的参数是content=hello&world,编码后就变成content=hello%26world,这样后端收到后会自动解码,正确拿到hello&world这个值。
不管你是用HTML表单、AJAX还是后端代码发送POST请求,都可以先对参数值做这个编码处理,大部分编程语言和前端框架都有现成的工具函数,比如JS里的encodeURIComponent(),Python里的urllib.parse.quote()。

2. 使用multipart/form-data格式提交

如果是表单提交或者需要上传文件的场景,直接把请求的编码类型设为multipart/form-data就不用手动编码特殊字符了。这种格式会用一个随机生成的边界字符串来分隔各个参数,每个参数的内容都是独立的,不会被当成分隔符解析。
比如HTML里这么写:

<form method="POST" enctype="multipart/form-data">
  <input name="content" value="hello&world">
  <button type="submit">提交</button>
</form>

AJAX里用FormData对象也能自动处理这种格式:

const formData = new FormData();
formData.append('content', 'hello&world');
fetch('/api/submit', {
  method: 'POST',
  body: formData
});

3. 发送JSON格式的请求体

如果是REST API的场景,干脆把请求体改成JSON格式,这时候特殊字符完全不需要额外处理——JSON本身就支持包含这些字符的字符串。只要把请求头的Content-Type设为application/json,然后把数据转成JSON字符串发送就行。
比如JS里的例子:

fetch('/api/submit', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ content: 'hello&world' })
});

后端只要正确解析JSON请求体,就能直接拿到包含&的参数值。

最后提醒一句:不管用哪种方法,后端都要对应做正确的解析处理——比如用URL编码的话,后端框架一般会自动解码;用JSON的话,要确保后端开启了JSON解析的支持。

内容的提问来源于stack exchange,提问作者Dmitry Khotinskiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:59:40