使用chrome插件 Resetlet 测试用户模块。发送 post 请求时需要在 HTTP HEADERS 加上 Content-Type 属性,值为 x-www-form-urlencoded 。

HTTP 请求分为三个部分:状态行、请求头、消息主体。
协议规定 POST 提交的数据必须放在消息主体,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。

服务端通过 Content-Type 属性知道客户端发送消息的编码方式从而正确解码。

x-www-form-urlencoded 是最常见的 POST 提交数据的编码方式。它将消息主体编码为 name/value 的形式。

将name、value中的空格替换为加号;将非ascii字符做百分号编码;将 input 的 name、value 用‘=’连接,不同的input之间用‘&’连接。

这种 post 格式跟 get 的区别在于,get 把转换、拼接完的字符串用‘?’直接与表单的 action 连接作为URL使用,所以请求体里没有数据;而 post 把转换、拼接后的字符串放在了请求体里,不会在浏览器的地址栏显示,因而更安全一些。