以POST方式发送请求,数据放在哪?
请求头Content-Type的值很重要。
前端ajax发送post请求时,Content-Type默认值为application/x-www-form-urlencoded,也就是通常说的表单提交,此时数据就放在请求头header后边,与header隔一个空行(该空行标记请求头header结束)。
有些POST的请求数据是放在body里,是怎么做到的呢?
其实就是改变Content-Type的值为application/json,这样数据就会以json格式放到body里,ajax可以这么写:
$.ajax({
url: "http://www.xxx.com"
type: "post",
dataType: "json",
data: "hello world",
headers: {'Content-Type': 'application/json'},
success: function (res) {
if (res.status == 1) {
window.location.reload();
} else {
alert(res.message);
}
}
})
PHP获取body数据方法:
file_get_contents('php://input')
HTTP请求信息分为请求行、请求头、请求正文。
两种POST的请求方式的数据都是放在请求正文中!
下面是Content-Type的值选项:
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
text/xml : XML格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:
application/xhtml+xml :XHTML格式
application/xml : XML数据格式
application/atom+xml :Atom XML聚合格式
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : <form encType="">
中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)
另外一种常见的媒体格式是上传文件之时使用的:
multipart/form-data : 需要在表单中进行文件上传时,就需要使用该格式