3-8 数据协商
2018-12-05 本文已影响0人
伯纳乌的追风少年
知识点:
数据协商:根据客户端发来的要求,服务端返回对应的数据
Accept 属性 (浏览器端会自动加上,也可以在ajax时设置)
request 中的头信息
Accept:浏览器可接受的MIME类型
Accept - Charset:浏览器可接受的字符集
Accept - Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间
Accept - Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到
User-Agent:系统名 内核 浏览器版本等,表明请求方的身份
Content属性(服务端返回)
response 中的头信息
Content-Type:返回内容的MIME类型
Content-Encoding:web服务器支持的返回内容压缩编码类型
Content-Language:响应体的语言
X-Content-Type-Options : nosniff ( 服务端没设置Content-Type的数据类型时,浏览器不主动预测类型)
enctype类型:
application/x-www-form-urlencoded(常规)
multipart/form-data(有文件)
text/plain
勾选Preserve log会把跳转之前的信息打印出来
demo
//server
const http=require('http');
const fs=require('fs')
const zlib=require('zlib')
http.createServer(function(request,response){
const html=fs.readFileSync('test.html')
response.writeHead(200,{
'Content-Type':'text/html',
'Content-Encoding':'gzip',
'X-Content-Type-Options':'nosniff'
})
response.end(zlib.gzipSync(html))
}).listen(8888)
console.log('server listening on 8888')
//html
<html>
<head>
<title>3-8 数据协商</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<form action='/form' id="form" method="POST" enctype='multipart/form-data'>
<input type="name" name="name">
<input type="password" name="password">
<input type="file" name="file">
<input type="submit">
</form>
</body>
<script type="text/javascript">
var form =document.getElementById('form')
form.addEventListener('submit',function(e){
e.preventDefault()
var formData=new FormData(form)
fetch('/form',{
method:'POST',
body:formData
})
})
</script>
</html>
demo演示结果