HTTP中的消息头
HTTP中的消息头分为请求头和响应头两种
1.发送请求头 前端设置,后端获取
请求头分为 系统请求头和自定义请求头(自定义请求头不能用POST来发送)
请求头的作用:请求头可以发送数据长度 ,php不能接收POST方式发送,必须通过请求头来让其解析
适用场景:下载文件时,数据分割为包(二进制数据流)的形式,服务端通过判断请求头的长度和包的长度,来判断数据是否完整
位置:open的后面,send的前面
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", loadHandler);
xhr.open("GET", "http://localhost:4006?user=morty&age=18");
xhr.setRequestHeader("content-type","application/x-www-form-urlencoded"); // 这个请求头是让PHP可以解析当前的POST数据
// GET方式允许发送自定义消息头,POST不允许
// 发送自定义消息头时,必须在服务端设置响应头跨域同意Access-Control-Allow-Headers:"*" 原因:会产生请求头跨域的问题
xhr.setRequestHeader("abc", "3"); //自定义请求头
xhr.send();
2.获取请求头(服务端获取)
req.headers
3.响应头(服务端发送) 不能发送自定义响应头
作用:解决跨域问题
res.writeHead(200, {
"content-type": "text/html;charset=utf-8", //内容编码
"Access-Control-Allow-Headers":"*",//请求头跨域
"Access-Control-Allow-Origin": "*", //域名跨域
// cors跨域
});
4.响应头获取(前端获取)
xhr.getAllResponseHeaders() //获取所有响应头
xhr.getResponseHeader("content-type") //获取指定的响应头