8.解决响应内容的显示问题

解决响应内容的显示问题

  • 在前面增强版HTTP服务器中,有一个文字响应过来乱码的问题,这一节主要就是解决它

setHeader

  • setHeader
    • 作用: 为隐式响应头设置单个响应头的值。
    • 语法: response.setHeader(name, value),其中name为响应头的类型,value为响应类型的值。

例:没有加setHeader

  • 首先,还是stronghttp.js文件
const http = require('http');
let server = http.createServer();
server.on('request', function(request, response) {
     if(request.url == '/') {
         response.end(`虞美人·听雨
         少年听雨歌楼上,红烛昏罗帐。壮年听雨客舟中,江阔云低,断雁叫西风。
         而今听雨僧庐下,鬓已星星也。悲欢离合总无情,一任阶前点滴到天明。`);
     } else if(request.url == '/login') {
         response.end(`阮郎归·耒阳道中为张处父推官赋
         山前灯火欲黄昏,山头来去云。鹧鸪声里数家村,潇湘逢故人。
         挥羽扇,整纶巾,少年鞍马尘。如今憔悴赋招魂,儒冠多误身。`);
     }
});
server.listen(8080, function() {
    console.log('loading...')
});
  • 然后,在命令行运行,浏览器访问localhost:8080
image.png
  • 注意: 这里没有加上response.setHeader('Content-Type', 'text/plain; charset=utf-8;'),所以显示的响应内容好像乱码了一样,其实这里并不是乱码,服务器返回的相应数据默认就是utf-8,但是浏览器在你没有告诉它是什么字符集的时候,它会选择默认的字符集来进行编码,中文操作系统默认的就是gbk,所以这里的显示会出现问题。

例: 加上setHeader()

  • 首先,给stronghttp.js加上response.setHeader()
const http = require('http');
let server = http.createServer();
server.on('request', function(request, response) {
    response.setHeader('Content-Type', 'text/plain; charset=utf-8;');
     if(request.url == '/') {
         response.end(`虞美人·听雨
         少年听雨歌楼上,红烛昏罗帐。壮年听雨客舟中,江阔云低,断雁叫西风。
         而今听雨僧庐下,鬓已星星也。悲欢离合总无情,一任阶前点滴到天明。`);
     } else if(request.url == '/login') {
         response.end(`阮郎归·耒阳道中为张处父推官赋
         山前灯火欲黄昏,山头来去云。鹧鸪声里数家村,潇湘逢故人。
         挥羽扇,整纶巾,少年鞍马尘。如今憔悴赋招魂,儒冠多误身。`);
     }
});
server.listen(8080, function() {
    console.log('loading...')
});
  • 然后,命令行运行,在浏览器访问localhost:8080结果如下:
image.png

当然,Conten-Type的类型并不仅仅只有text/plain 还有text/htmltext/html就是将文本解析成html代码来响应回来,例子就不举了,很简单

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容