关于 HTTP post 请求 form data 里的特殊符号
2022-06-13 本文已影响0人
_扫地僧_
对于终端用户来说,表单提交的过程很方便,在某种程度上相当于输入数据,点击提交按钮。 但是,从工程的角度来看,它需要一种编码机制才能可靠地将这些数据从客户端发送和接收到服务器端以进行后端处理。
使用 JavaScript 发送 form data,使用 PHP 作为服务器端接收,则 JavaScript 端需要使用 encodeURIComponent()
进行处理。
表单提交最常用的 HTTP 方法是 POST。 但是,对于幂等的表单提交,我们也可以使用 HTTP GET 方法。 并且,指定方法的方式是通过表单的方法属性。
对于使用 GET 方法的表单,整个表单数据作为查询字符串(query string
)的一部分发送。 但是,如果我们使用 POST 方法,那么它的数据将作为 HTTP 请求正文(body
)的一部分发送。
而且,在后一种情况下,我们还可以通过表单的enctype属性来指定数据的编码方式,该属性可以取两个值,分别是application/x-www-form-urlencoded
和 multipart/form-data
。
HTML 表单的 enctype 属性的默认值为 application/x-www-form-urlencoded
,因为它处理了数据完全是文本的基本用例。 然而,如果我们的用例涉及支持文件数据,那么我们将不得不用 multipart/form-data 的值覆盖它。
本质上,它将表单数据作为键值对发送,并由 &
字符分隔。 此外,相应的键和值用等号 (=
) 分隔。 此外,所有保留字符和非字母数字字符都使用百分比编码进行编码。
看下面的代码:
// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B