首页 > http > HTTP POST请求为什么要把部分的参数放在url中?

HTTP POST请求为什么要把部分的参数放在url中?

2015年10月29日 2,284 人阅读 发表评论 阅读评论

1、问题

在对接短信网关中,发现使用curl工具发送post请求时一直失败,并返回一个页面,检查参数也没有问题,但是就是一直失败。后面仔细看了返回页面,在页面中看到了post请求的Demo,对比了我使用curl发送post请求时http数据发现:Demo中将post的一个参数放在了http协议中request_line的url部分里。对比如下:

我的请求:

POST /send HTTP/1.1\r\n

HOST: smsapi.com\r\n

Accept: */* Content-Length: 44\r\n

\r\n

month=Send&mobile=15980698888&content=msg121

Demo的请求:

POST /send?month=Send HTTP/1.1\r\n

HOST: smsapi.com\r\n

Accept: */* Content-Length: 33\r\n

\r\n

mobile=15980698888&content=msg123

2、困惑

POST比较规范的做法是把参数全部放在body里,但这里为什么要把部分参数放在url里呢?

3、解惑

带着疑惑问了web开发的同事老肖,才茅塞顿开,之所以把部分参数放在request line的url里是为了能提前对请求进行校验(接收完request line数据就可以校验了),而不用收完整个body才能校验请求的合法性,这样就提高了校验请求合法性的效率。

分类: http 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.