首先创建一个文件流来读取要下载的文件,当然可以是动态产生的输入流 const fileStream = fs.createReadStream('test.zip'); 然后创建响应头,指定响应的类型,...Content-Disposition': 'attachment;filename=\"resources123.zip\"' }; res.writeHead(200, head); 最后通过文件流的pipe()方法输出到响应里...filename=\"test123.zip\"' }; res.writeHead(200, head); fileStream.pipe(res); }); 最后说一下,express
HTTP协议、HTTP的请求报文和响应报文 HTTP协议 HTTP主要特点 HTTP的请求报文和响应报文 请求报文 请求行 请求消息头 空行 请求体 响应报文 响应状态行 响应消息头 空行 响应体 总结...HTTP协议就是用于规范客户端浏览器和服务器端以什么样的格式进行通信数据交互,作为应用层的面向对象的协议,HTTP由请求和响应构成,是一个标准的客户端服务器模型,也是一个无状态的协议。...HTTP的请求报文和响应报文 当我们打开一个网站,单击F12,进入Network窗口,单击默认头信息选项卡,可以看到格式化后的响应报文和请求报文。...响应报文 一个HTTP的响应报文由状态行、响应消息头、空行和响应体四部分组成。...响应状态行 响应状态行包括HTTP协议版本、成功或错误的整数代码(状态码)和对状态码进行描述的文本信息,以空格进行划分。 状态代码由3位数字组成,表示请求是否被理解或被满足。
📷
---- HTTP 响应状态代码指示特定 HTTP 请求是否已成功完成。...类似于 FlashGet 或者迅雷这类的 HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。...这与 301 Moved Permanently HTTP 响应代码具有相同的语义,但用户代理不能更改所使用的 HTTP 方法:如果在第一个请求中使用 POST,则必须在第二个请求中使用 POST。...请注意,与此响应一起,应发送解释问题的用户友好页面。这个响应应该用于临时条件和 Retry-After:如果可能的话,HTTP头应该包含恢复服务之前的估计时间。...505 HTTP Version Not Supported 服务器不支持请求中所使用的HTTP协议版本。
现在我们首先将学习如何使用 Node.js 创建 HTTP/2 服务器,然后创建一个空文件夹和一个自签名的 SSL 证书: $ mkdir http2-express $ cd http2-express...--save 现在你可以创建 index.js 作为我们应用的入口文件。...它首先需要一些依赖和实例化: const port = 3000 const spdy = require('spdy') const express = require('express') const...JavaScript、Node.js 和 React.js 培训感兴趣,请扫描下面的二维码报名。...实例创建的服务器中加载 SSL 选项: spdy .createServer(options, app) ---- 往期精选文章 使用虚拟dom和JavaScript构建完全响应式的UI框架 扩展
page=11231313 时控制台会打印 11231313 console.log(req.query.page) res.render('index', { title: 'Express' }...,发生错误是该方法在next(err) 内部调用Response.send() 方法 发送http响应send() 方法 只发送一个https响应至请求端,只接收一个参数,这个参数可以是任何类型之所以可以接收任何类型的参数是因为执行这个方法的时候会自动设置响应头数据类型...,即响应头里Conten-Type字段1.当参数为Buffer对象时 Response.send() 将Conten-Type响应头字段设置为application/octet-streamrouter.get...name:'iron man', title:'无敌'})Response.json() 方法只接受一个参数,可以是任何的Json格式类型,包括对象、数组字符串Response.status() 设定http...router.get('/ceshi', function(req, res, next) { res.json({name:'iron man'});});Response.redirect() 还可以设定 http
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端处理是否正常、通知出现的错误等工作。状态码由3位数表示,数字中的第一位定义了响应类。...类似于 FlashGet 或者迅雷这类的 HTTP 下载工具都是使用此类响应实现断点续传或者将一个大文档分解为多个下载段同时下载。...这与 301 Moved Permanently HTTP 响应代码具有相同的语义,但用户代理不能更改所使用的 HTTP 方法:如果在第一个请求中使用 POST,则必须在第二个请求中使用 POST。...请注意,与此响应一起,应发送解释问题的用户友好页面。 这个响应应该用于临时条件和 Retry-After:如果可能的话,HTTP头应该包含恢复服务之前的估计时间。...资料引用: HTTP响应代码(https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status);《图解HTTP》读书笔记.md(Github)(https
响应头 报文头包含若干个属性,格式为“属性名:属性值” 常见的响应头 Allow:服务器支持哪些请求方法 Content-Length:响应体的字节长度 Content-Type:响应体的MIME类型...Content-Encoding:设置数据使用的编码类型 Date:设置消息发送的日期和时间 Expire:设置响应体的过期时间,一个GMT时间,表示该缓存的有效时间 cache-controller:
一:一个HTTP请求报文由四个部分组成:请求行、请求头部、空行、请求数据。...1.请求行 1.请求方法:GET POST 2.URL字段 3.HTTP版本字段 2.请求头 1.Accept:浏览器可接受的mime类型。 ...二:响应报文 : 响应头,响应行,响应主体。 1.响应行 1.协议版本 2.状态码 2.响应头 1.Allow (支持那些请求的方法。...对于支持持久HTTP连接的浏览器来说,这个函数是很有用的。 15。...3.响应体 1.可能是纯数据 2.可能是 HTML 页面。
http Provisional headers are shown 检查服务端和前端的异步请求操作 我的错误是在dotnet core中,服务端为了响应range范围请求,使用了 Response.SendFileAsync...file,from,size) 发送视频文件,由于接口返回的Task,所以服务端无法捕获异常 最后替换了mp4文件,发现是html video标签对mp4文件格式支持的问题,可能是内部异常,导致出现了http...canceled错误,查阅很多网上的解释,基本上都是和异步操作有关 ---- 和标题可能不符,但是还是记录一下,http canceled错误,原因很多,所以大多数公司都使用的自定义的播放器,而没有用
HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。 在本章节中我们将具体来介绍HTTP响应头信息。 应答头 说明 Allow 服务器支持哪些请求方法(如GET、POST等)。...只有当浏览器使用持久HTTP连接时才需要这个数据。...除了刷新当前文档之外,你还可以通过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。...注意这种功能通常是通过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现,这是因为,自动刷新或重定向对于那些不能使用...因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是<META HTTP-EQUIV="Refresh" ...>。
HTTP/1.0:特点:每次请求服务器上的资源都要建立新的连接,响应完毕后都会关闭连接。是无状态的协议。...HTTP/1.1:特点:在一次TCP/IP连接的基础上可以发出多次请求和得到多次的响应。比1.0多了一些请求和响应头。...如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 ) Cookie:这是最重要的请求头信息之一(会话有关) 二、http响应 http...响应具体格式如下: Http/Version-number Statuscode message Server 服务器的类型信息 Content-type 响应的MIME类型信息 Content-length...被包含在相应类型中的字符数量 …… 空行 Option Response Body ①响应行: Http/Version-number:服务器用的协议版本 Statuscode:响应码。
); 复制代码 可以看到Express的路由可以直接用app.get这种方法来处理,比我们之前在http.createServer里面写一堆if优雅多了。...// express.js var mixin = require('merge-descriptors'); var proto = require('....express.js对应的源码看这里:github.com/expressjs/e… app.listen 上面说了,express.js只是一个空壳,真正的app在application.js里面,所以...express.js里面就加了注释,这个函数是http.createServer的回调函数。...Express的主要工作是将http.createServer的回调函数拆出来了,构建了一个路由结构Router。 这个路由结构由很多层layer组成。 一个中间件就是一个layer。
Nodejs里http模块的createServer()方法的回调函数的第二个参数是一个http.ServerResponse对象,可以利用这个对象来发送服务器端的响应数据。...利用http.ServerResponse对象的writeHead方法或setHeader()方法来发送响应头信息。...下面看一个通过ajax获取HTTP服务器返回数据的示例: 1// app.js 2const http = require( "http" ); 3let app = http.createServer...可以使用http.ServerResponse对象的write方法发送响应内容。如果在write方法使用之前没有设置响应头信息,nodejs就会隐式创建一个响应头。...可以使用http.ServerResponse对象的setTimeout方法设置响应超时时间。
Express.js Tutorial: Build RESTful APIs with Node and Express | Mosh 在Youtube上看到Mosh的一篇关于使用Node和Express...构建RESTful APIs的示例,对应的视频地址是:Express.js Tutorial: Build RESTful APIs with Node and Express | Mosh,作者Mosh...44:03 Handling HTTP PUT Requests 52:33 Handling HTTP DELETE Requests http://programmingwithmosh.com...创建程序 首先保证在自己的系统下安装了Node.js程序,然后安装配置node和npm、cnpm等 然后使用cnpm或npm安装express和joi依赖, cnpm install express...joi 对应的代码如下: const Joi = require('joi'); const express = require('express'); const app = express();
Express 安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。...req指的是请求,res指的是响应。 现在站在服务端的视角来看:req是前端传过来的,res是响应返回给前端的。...可以把处理好的内容,发送给客户端: 基础代码示例 /* res.send() 1. send 方法内部会检测响应内容的类型 2. send 方法会自动设置 http 状态码 3. send 方法还会帮我们自动设置响应的内容类型以及编码...http://localhost:3000/js/login.js 注意:Express在指定的静态目录中查找文件,并对外提供资源的访问路径。.../css/style.css http://localhost:3000/publicljs/app.js Express之路由 现实生活的路由 在这里,路由是按健与服务之问的映射关系 Express中的路由
本文来讲下 express 框架的使用,变异的环境是 VS Code ,这里我已经配饰了阿里的镜像,所有 npm 指令用 cnpm 代替 首先学会向 Node.js 种引入 express 非常建党只需两步...,输入指令: cnpm init 然后就可以载入 express cnpm install express -save 到此为止 express 救成功导入了 这里介绍一个技巧: 输入: cnpm install...现在开始讲 express 的使用: 准备部分(包的导入) var express = require('express'); var app = express(); 最简单的一个使用: 向服务器请求时...,放回一个 JSON 数组 var express = require('express'); var app = express(); app.get('/api', function(req, res...req.params.name);//放回 json 数组 }); app.listen(3000);console.log('listening to port 3000'); 搜索:‘ http
HttpCode 浏览器向服务器请求时,服务器响应的消息头里面有状态码,表示请求结果的状态 分类 1XX:收到请求,需要请求者继续执行操作,比较少用 2XX:请求成功,常用200 3XX:重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的...URL地址,这个地址可以从响应的Location首部中获取: 好处:网站改版、域名迁移、多个域名指向同个主站导流 常用: 301:永久性跳转,比如域名过期,换个域名 302:临时性跳转 4XX:客户端出错
406 Not Acceptable 服务器生成的响应无法被客户端所接受。...服务器从上游服务器收到一个无效的响应。 502.1 CGI 应用程序超时。 502.2 CGI 应用程序出错。 503 Service Unavailable 请求未完成。服务器临时过载或当机。...505 HTTP Version Not Supported 服务器不支持请求中指明的HTTP协议版本
本文来自 “Nodejs技术栈” 一位读者的一个问题,“Node.js 发起 HTTP 请求时,怎么携带上 cookie 信息?”...这是浏览器的行为会自动帮我们做,那么如果一个 Node.js 做为客户端呢?...下面我们用 Node.js 提供的系统模块 HTTP[3] 看看如何实现。...const http = require('http'); function sendRequest() { const req = http.request({ method: 'GET'...222', 'c=333']) // 方式二设置 req.on('error', console.error); req.end(); } sendRequest(); 服务端代码如下所示,注意响应设置的是
领取专属 10元无门槛券
手把手带您无忧上云