http请求

请求 - axios

孤街浪徒 提交于 2019-12-27 17:47:38
实际应用示例 前端不需要做统一的接口防重 前端无法通过判断接口是否返回来释放按钮(因为可以手动刷新页面,将导致刷新前请求丢失) 后端对接口做了防重 通过增加时间戳避免IE9的get请求缓存问题 axios.interceptors.request.use(function (response) { if (method === 'get' && isIE) { config.url += `${!config.url.includes('?') ? '?' : '&'}timeStamp=${new Date().getTime()}`; } }) 添加响应拦截器,统一处理异常请求状态 axios.interceptors.response.use( res => { // 对响应数据进行处理 return res }, err => { const errInfo = err.response; if (errInfo) { switch (errInfo.status) { case 403: // 403 服务器拒绝请求。 break; case 404: // 404 服务器找不到请求的网页。 break; case 401: // 401 请求要求身份验证。 break; case 400: // 服务器不理解请求的语法。 break; case 500: //

Http协议

喜欢而已 提交于 2019-12-27 16:46:41
Http协议:网络传输协议,这个协议规定了客户端和服务器之间得通讯规则。 Http协议,规定了客户端在向服务器发送请求得时候,需要携带得内容: 客户端的一次请求需要携带以下内容: 1> 请求头:请求头中包含了一些键值对的信息。 Accept: 客户端告诉服务器,此次请求希望得到什么类型的内容。(application/json, text, html, data)。尽量让服务器返回客户端能够加载的数据。 Accept-Encoding:客户端告诉服务器,尽量返回gzip,br类型的包。 Accept-Language:客户端告诉服务器,尽量返回什么语言。 Connection:keep-alive(客户端和服务器一旦建立链接,在一段时间内,保持这个链接状态。) Http协议的版本是1.0版本,在1.0之前,客户端和服务器之间的连接属于短链接,一旦服务器给客户端响应之后,连接会立刻断开。1.0开始,不在频繁的连接和断开。 客户端和服务器之间建立一次连接,需要经过三次握手。 客户端和服务器之间断开一次连接,需要经过四次分手。 Cookie:用来标识用户身份或者是连接状态的键。因为Http本身是无状态的协议,请求和请求之间没有任何联系。 Host:表明客户端访问的服务器主机地址。www.baidu.com baidu.com:主域名 www.baidu.com/map.baidu.com

HTTP协议详解

你离开我真会死。 提交于 2019-12-27 16:39:18
一、HTTP协议详解之URL篇 http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。 HTTP URL (URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息)的格式如下: http://host[":"port][abs_path ] http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,为空则使用缺省端口80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。 eg: 1、输入: www.guet.edu.cn 浏览器自动转换成: http://www.guet.edu.cn/ 2、http:192.168.0.116:8080/index.jsp 二、HTTP协议详解之请求篇 http请求由三部分组成,分别是:请求行、消息报头、请求正文 1、请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF 其中 Method表示请求方法

Ocelot - .Net Core开源网关

♀尐吖头ヾ 提交于 2019-12-27 15:19:56
Ocelot - .Net Core开源网关 作者:markjiang7m2 原文地址: https://www.cnblogs.com/markjiang7m2/p/10857688.html 源码地址: https://gitee.com/Sevenm2/OcelotDemo 今天要给大家介绍的Ocelot是一个基于 .net core的开源WebAPI服务网关项目,它的功能非常强大,包括了路由、请求聚合、服务发现、认证鉴权、限流、负载均衡等功能。而这些功能都可以直接通过修改json配置文件即可使用,非常方便。Ocelot是系统中对外暴露的一个请求入口,所有外部接口都必须通过这个网关才能向下游API发出请求,就如地铁中的安检系统,所有人都必须经过安检才能乘坐地铁。 Ocelot官网: http://threemammals.com/ocelot 说明文档: https://ocelot.readthedocs.io/en/latest/ Github: https://github.com/ThreeMammals/Ocelot 我将通过具体案例对Ocelot的功能进行一一展开说明,而本文中涉及案例的完整代码都可以从我的代码仓库进行下载。 仓库地址: https://gitee.com/Sevenm2/OcelotDemo 搭建Ocelot项目 通过VS2017新建一个基于

Nodejs资料之web服务器

爱⌒轻易说出口 提交于 2019-12-27 11:29:29
◆ 创建web服务器示例: // 引用系统模块 const http = require('http'); // 创建web服务器 const app = http.createServer(); // 当客户端发送请求的时候 app.on('request', (req, res) => { // 响应 res.end('<h1>hi, user</h1>'); }); // 监听3000端口 app.listen(3000); console.log('服务器已启动,监听3000端口,请访问 localhost:3000') ◆ 请求信息获取方法: app.on('request', (req, res) => { req.headers // 获取请求报文 req.url // 获取请求地址 req.method // 获取请求方法 }); ◆ GET请求处理: 参数被放置在浏览器地址栏中,获取参数需要使用系统模块url来处理url地址 // 引入创建网站服务器的模块 const http = require('http'); // 用于处理url地址 const url = require('url'); // app对象就是网站服务器对象 const app = http.createServer(); // 当客户端有请求来的时候 app.on('request',

HTTP请求的缓存(Cache)机制

我的未来我决定 提交于 2019-12-27 06:06:14
原文地址:http://small.aiweimeng.top/index.php/archives/58.html 先来一张图: #### 下面简单的来描述一下HTTP Cache机制 : 当资源资源第一次被访问的时候,http status返回200,在头部携带当前资源的描述信息,eg: 最后修改的时间:```Last-Modified``` 资源状态唯一标识:```Etag``` 资源在客户端缓存的过期时间:```Expires``` 同时浏览器会将资源缓存到cache目录,并保存文件描述信息。 当客户端第二次请求资源时,会先检查cache目录中是否含有该资源,如果有,并且还没到Expires设置的时间, 即文件还没有过期,那么此时客户端将直接从Cache目录中读取文件,而不再发送请求 如果资源已经过期,客户端会发送一次http请求到服务器,同时在header携带上次修改的时间: ```text If-Modified-Since Thu, 26 Nov 2009 13:50:19 GMT If-None-Match "8fb8b-14-4794674acdcc0" ``` #### 为什么会返回上一次的信息呢? web服务器在接收到请求时,会先解析header里面的信息,然后校验头部信息。 如果该资源文件从上次时间到现在都没有修改或者Etag信息没有变化,

axios(基于promise的http库)

半城伤御伤魂 提交于 2019-12-27 06:00:59
vue2.0版本后,推荐axios,vue1.X版本使用vue-resourse Axios特点 1、浏览器中创建XMLHttpRequests 2、从node.js创建http请求 3、支持promise API 4、拦截请求和响应 5、转换请求和响应数据 6、取消请求 7、自动转换JSON 8、客户端支持防御XSRF Axios配置项(非常的重要) { // `url` 是用于请求的服务器 URL url: '/user', // `method` 是创建请求时使用的方法 method: 'get', // 默认是 get // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。 // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL baseURL: 'https://some-domain.com/api/', // `transformRequest` 允许在向服务器发送前,修改请求数据 // 只能用在 'PUT', 'POST' 和 'PATCH' 这几个请求方法 // 后面数组中的函数必须返回一个字符串,或 ArrayBuffer,或 Stream transformRequest: [function (data) { // 对 data 进行任意转换处理 return data; }],

HTTP 0.9/1.0/1.1/2 版本变迁

落爺英雄遲暮 提交于 2019-12-27 03:20:15
记录一下 稍后总结 HTTP 0.9 - 1.0 - 1.1 - 2 版本变迁 http://www.52im.net/thread-1709-1-1.html HTTP 1.1 版本协议详解 http://www.52im.net/thread-1677-1-1.html 移动网络优化手段 http://www.52im.net/thread-1413-1-1.html ----- HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。 我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。 HTTP是基于传输层TCP协议的应用层协议,主要规定了客户端和服务器之间的通信格式。 HTTP/0.9版本: 1991年发布,只有一个简单的GET命令,服务器只能回应HTML格式的字符串,回应结束后,TCP链接就关闭。 --- HTTP/1.0版本: 1996年5月发布。

Web实验课程报告

十年热恋 提交于 2019-12-27 02:04:04
一、实验内容 本学期web实验课我做了两方面的内容,一方面是有机农场管理系统的继续完善,另一方面是系统模块功能的展,实现利用Cookie的登录注册功能。 仔细研究了去年的web项目,在有机农场管理系统的基础上更改了原系统的CSS和HTML等,使界面更加美观。又在原系统基础上扩展了登录功能,实现了登录注册功能。并且利用了cookie识别用户的身份。 二、实验目的 掌握常见网页设计工具的使用,熟悉web站点的开发工具环境和使用方法。掌握建立一个web的基本过程,掌握网站设计的基本技术与技巧。 根据要求,给出网页设计方案,可以按照要求,利用合适的图文素材设计符合要求的网页设计作品。注意版面布局、色彩搭配等,网站链接自然,顺畅方便。了解和熟悉网页式设计的基础知识和实现技巧。 熟练掌握html,CSS,JavaScript,node.js等的操作和使用。增强动手实践能力,进一步加强自身综合素质。逐渐培养做一个完整项目的能力。 三、实验原理 1、什么是Cookie Cookie 是服务器保存在浏览器的一小段文本信息。浏览器每次向服务器发出请求,就会自动附上这段信息。 2、Cookie的作用 (1)Cookie 主要用来分辨两个请求是否来自同一个浏览器 (2)用来保存一些状态信息,例如: a.对话(session)管理:保存登录、购物车等需要记录的信息。 b.个性化:保存用户的偏好

HTTP请求重发

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-27 01:48:09
HTTP 协议中,从语义上讲, GET 请求一般是获取服务器端的资源,不会对服务器数据造成副作用,可简单理解为一种“读”操作;而 POST 请求多用于更改(增、删、改)服务器上的资源,会产生一定的副作用。 所以,这样看起来,浏览器是不是就不会因为网络原因啥的自动重发 POST 请求吧?实际上是这样么? 起因 最近在对接地图的一个数据录入接口:前端向后端发送一个 CSV 文件,后端将 CSV 文件中的数据解析出来,然后将数据通过地图接口导入到地图数据库。由于地图提供的接口有点怪异,批量导入数据的接口有一些问题,只能使用单条导入接口,所以在这里, CSV 文件里面有多少条数据,就会访问多少次地图的接口。 虽然有点坑,不过问题究竟是解决了,于是就这样上线了。 天有不测风云,遇到一个客户,一下要导入上千条数据,后端这样串行地一条一条去导入,很轻易地就花了好几分钟。而且还遇到一个诡异的现象:每条数据都导入了两次! 分析 凭借多年的前端开发经验(不要脸了),立马大胆猜测,浏览器发送了两次请求。 于是先到谷歌开发者工具的 Network 标签页检查一下请求,发现此处只记录了一次请求,并且该请求没有响应,好像看不出来什么猫腻。再切换到 chrome://net-internals/ 中看看日志,发现一个 error code , google 了一下,并没有什么结果,看起来也验证不了猜想。