专栏名称: 似朝朝我心
一个慢慢学习前端的小pan,路漫漫其修远兮,...
目录
相关文章推荐
51好读  ›  专栏  ›  似朝朝我心

http响应内容类型:Content-Type

似朝朝我心  · 简书  ·  · 2020-11-09 19:43

正文

const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
res.end('hello,你好啊!')
})
server.listen(8080,() => {
  console.log('Server is running at:http://localhost:8080')
})
  • 上述代码会产生中文乱码。


  • 为什么会产生中文乱码呢?
    在服务器端默认发送的数据,采用的是utf-8编码的内容,但是我们的浏览器是不能准确知道你是utf-8编码的内容,所以浏览器会在不知道服务器响应内容的编码的情况夏,会按照我们当前操作系统的默认编码去解析,而我们中文window操作系统默认是gbk编码。

  • 所以解决中文乱码的正确方法是告诉浏览器,我给你发送的内容是什么编码的(添加如下代码进去)。

res.setHeader('Content-Type', 'text/plain; charset=utf-8')
  • 在http协议中,Content-Type就是用来告知对方,你给对方发送的数据内容是什么类型的,"您好!先生(客户端浏览器),我发送的是text-plain普通文本哦,麻烦你用utf-8编码给用户解析下。"


  • 那对方(浏览器)到底有没有接收到我们传达的话语呢?有的。我们可以看它的响应头Response Headers。


  • 如果你选择了发送html文本,带有h5等标签,则需告知浏览器你发送的文本类型是text/html,否则将会当成字符串被解析,而不是当成标签。
const http = require('http')
const server = http.createServer()
server.on('request', (req, res) => {
  res.setHeader('Content-Type', 'text/html; charset=utf-8')
  res.end(`
  <h1>你好啊!</h1>
  <br>
  <button>点我有惊喜!</button>
  `)
})
server.listen(8080, () => {
  console.log(`Server is running at:http://localhost:8080`)
})

客户端通过域名向服务器发送请求,服务器响应内容返回给客户端的浏览器。

  • 上面的代码我们已经尝试过用一个简单的方法生成1个htpp服务器,然后发送字符串给客户端浏览器,但我们知道真实的环境下是一个个的单文件响应给浏览器,然后渲染成视图界面。
    例如:我们访问百度域名,响应在浏览器的文件有:



    这些文件就渲染成如下的完整视图。








请到「今天看啥」查看全文