HTTP协议原理+实践

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演示结果
上一篇下一篇

猜你喜欢

热点阅读