http请求

计算机网络高频面试题解析(含书籍推荐)

三世轮回 提交于 2020-02-03 21:14:18
网络原理是工程师的必须了解的计算机基础知识,先推荐下两本好书,《图解HTTP》和《图解TCP/IP》。 《图解TCP/IP》讲解网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,《图解HTTP》对HTTP协议进行了全面系统的介绍,这两本书的特点都是在讲解的同时,配上了大量漫画通信图例,读起来比较轻松。 高频面试题解析 1、OSI七层网络模型的结构与功能 OSI是一个开放性的通信系统互连参考模型,OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。 OSI是一个定义得非常好的协议规范,但是比较复杂所以一般使用TCP/IP 的四层模型来描述。 就目前来说,TCP/IP 的四层模型更受广泛认可,在计算机网络中,大家更多喜欢使用 TCP/IP 模型来进行划分和理解。因为表示层、会话层以及应用层之间的界限在实际应用中并不清晰,让人不好区分。 2、TCP/IP四层协议有哪些结构与功能 TCP/IP 参考模型是一个包含了不同网络层次的一系列网络协议的集合。一般 TCP/IP 参考考模型分为四层,从下到上分别是,数据链路层、网络层、传输层和应用层。 也有将它分为五层的,也就是加上物理层,不过对于大部分的计算机网络应用,软件工程师一般都是不关心物理层。 应用层提供了不同应用数据包的处理协议

客户端负载均衡Feign之三:Feign设计原理

[亡魂溺海] 提交于 2020-02-03 19:28:06
什么是Feign? Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。 Feign被广泛应用在Spring Cloud 的解决方案中,是学习基于Spring Cloud 微服务架构不可或缺的重要组件。 开源项目地址: https://github.com/OpenFeign/feign Feign解决了什么问题? 封装了Http调用流程,更适合面向接口化的变成习惯 在服务调用的场景中,我们经常调用基于Http协议的服务,而我们经常使用到的框架可能有HttpURLConnection、Apache HttpComponnets、OkHttp3 、Netty等等,这些框架在基于自身的专注点提供了自身特性。而从角色划分上来看,他们的职能是一致的提供Http调用服务。具体流程如下: Feign是如何设计的? PHASE 1. 基于面向接口的动态代理方式生成实现类 在使用feign 时,会定义对应的接口类,在接口类上使用Http相关的注解,标识HTTP请求参数信息,如下所示: interface GitHub {

Http中的get与post请求的区别

馋奶兔 提交于 2020-02-03 18:09:03
get与post最直观的区别 数据存放位置 : 1.get是把请求的数据放到url最后 2.post是把数据放在header头中 安全性 : 1.get把数据显性暴露在外面,不安全但执行效率却比post 方法好 2.post稍微隐藏下,不会被大型爬虫直接解包,相对安全但也不安全 表单的提交默认是用get,在进行文件上传时只能用post而不能是get 数据量 : 1.get传送数据量较小,get限制1083(其实真正限制的是url的长度,从通信协议角度讲,数据量本身没有限制,而且长度限制只存在于IE浏览器下,谷歌火狐不存在这个问题) 2.post传送的数据量较大,一般默认为不受限制 其实GET与POST本质没有区别,它们是HTTP协议中的两种发送请求的方法。 HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。HTTP的底层是TCP/IP。所以get和post的底层也是TCP/IP,但是由于HTTP的规定和浏览器/服务器的限制,导致它们在应用过程中体现出一些不同。 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。 简单的说: GET产生一个TCP数据包

杂记

本小妞迷上赌 提交于 2020-02-03 08:28:10
使用Restful api进行设计 基本原则一:URI 应该将 api 部署在专用域名之下。 URL 中尽量不用大写。 URI 中不应该出现动词,动词应该使用 HTTP 方法表示但是如果无法表示,也可使用动词,例如:search 没有对应的 HTTP 方法,可以在路径中使用 search,更加直观。 URI 中的名词表示资源集合,使用复数形式。 URI 可以包含 queryString,避免层级过深。 基本原则二:HTTP 动词 对于资源的具体操作类型,由 HTTP 动词表示,常用的 HTTP 动词有下面五个: GET:从服务器取出资源(一项或多项)。 POST:在服务器新建一个资源。 PUT:在服务器更新资源(客户端提供改变后的完整资源)。 PATCH:在服务器更新资源(客户端提供改变的属性)。 DELETE:从服务器删除资源。 还有两个不常用的 HTTP 动词: HEAD:获取资源的元数据。 OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。 用户管理模块: 1. [ POST ] http: //lou.springboot.tech/users // 新增 2. [ GET ] http: //lou.springboot.tech/users?page=1&rows=10 // 列表查询 3. [ PUT ] http: //lou.springboot

Fiddler抓包工具

一笑奈何 提交于 2020-02-03 03:43:03
Fiddler介绍 Fiddler是一款非常流行并且实用的HTTP抓包工具,原理是在电脑上开启一个HTTP代理服务器,然后转发所有的HTTP请求和响应。不仅支持请求重放一些高级功能,也可以支持对手机应用进行HTTP抓包。 Fiddler是用C#开发的工具,包含一个简单却功能强大的基于JScript.NET事件的脚本子系统,灵活性非常棒,可以支持众多的HTTP调试任务,并且能用.net框架语言进行扩展。还支持断点调试技术,当请求或者响应属性能跟目标标准相匹配时,Fiddler就能暂停HTTP通信,并且允许修改请求和响应这种功能对安全测试很有用,也可以用来做一些功能测试。 来源: CSDN 作者: T远影 链接: https://blog.csdn.net/qq_42359085/article/details/104145125

第四章 使用Servlet处理HTTP请求

白昼怎懂夜的黑 提交于 2020-02-03 03:20:45
回顾上一章的知识: 请求网络资源HTTP会发出多个请求并得到响应 设置响应状态行关键是设置状态码 在向客户端输出内容之前要设置状态码和响应头 设置响应头让Servlet发挥最大功能 消息体可以用文本或二进制流方式发送 响应重定向把请求转发给另外一个URL,利用302状态码和Locatoin头,让浏览器处理 可以根据时间来控制响应 本章目标: HTTP请求提交的方法 获取HTTP请求行与请求头 获取表单数据 请求派发和请求范围 GET/POST提交方法: 浏览器向Web服务器发送HTTP请求 –用户在网页上点击一个超连接 –用户提交在网页上填写好的表单 –用户在浏览器地址栏中输入URL地址并回车 默认情况下都是使用HTTP协议的GET方法提交请求 GET/POST提交方法区别: 何时使用GET/POST方法: 1:请求一个静态页面或图形文件时使用GET方法,因为仅仅需要发送文件名; 2:发送大数据的时候,使用POST方法; 3:上传文件时,使用POST方法; 4:发送用户名、密码或其他保密信息的时候使用POST方法; 获取HTTP协议请求行: HttpServletRequest对象的如下方法访问 –getMethod():获取HTTP的请求方法,例如GET、POST等 -getRequestURI():获取请求的URI资源 –getRequestURL():获取请求的URL

Servlet 处理HTTP请求

て烟熏妆下的殇ゞ 提交于 2020-02-03 03:16:07
1.GET/POST 提交方法: 区别: get:静态的,不重要的,长度不超过255个字符,会在地址栏显示 post:大量的,敏感信息,不会被浏览器缓存,地址栏不可见 2.获取HTTP协议求行: getRequestURI()请求资源:/web01/index.html getRequestURL()包括协议,服务器名,IP,端口号,资源路径:http://127.0.0.1:8080/web01/index.html getServletPath()获取Servlet映射路径 3.请求转发 一个请求,多个Servlet处理,公用一个request和response对象,响应由最后一个Servlet响应 重定向由客户端完成 请求转发由服务器完成,服务器内部进行处理 请求范围:多个Servlet处理同个请求转发的时候,变量都可以访问,都是此请求对象 4.文件上传 表单:1、必须采用POST提交,2、必须指定编码类型为:multipart/form-data enctype="multipart/form-data" method="post" 5、web应用程序状态管理 web服务器是不记录链接状态的,比如在购物,付账,登录,都不记录状态, 对于web服务器来说每次请求都是一个新的请求 解决web应用程序状态管理的解决方案: 1).表单隐藏字段:可以存储固定发送个服务器的固定值和名称

Expect:100-Continue & HTTP 417 Expectation

人走茶凉 提交于 2020-02-03 00:41:27
背景: 今天调试火车票查询的代码,发现一个奇怪的事情,如果使用公司本地的代理,那么一切正常,如果使用的是公司台湾的代理,那么将出现以下错误 :“The remote server returned an error.(417) Unkown”。 很是奇怪啊,为什么换了服务器后,效果完全相反。反复查阅代码最终找出关键点,HTTP协议。 1.分析bug的原因 看着VS2010的错误信息: (417) Unkown 。 有一点经验的人就会联想到HTTP200啊,等等之类的东西。那个HTTP协议中的内容那么多,到时是哪一个属性出现的问题呢,我决定用wireshark抓包,进行比较。对比结果:用台湾代理时,抓包的结果中多处了一下字符串 “‍Expect:100-Continue”。( wireshark使用 ) 于是查看关于HTTP1.1的相关网页。 HTTP1.1协议中文版-RFC2616 和 HTTP1.1协议英文版-RFC2616 在上两篇文章中可以看到以下一段描述: The purpose of the 100 (Continue) status (see section 10.1.1 ) is to allow a client that is sending a request message with a request body to determine if the

【vue】学习笔记八:vue-resource 实现 get, post, jsonp请求

佐手、 提交于 2020-02-03 00:16:10
vue-resource插件开源地址https://github.com/pagekit/vue-resource ps:除了 vue-resource 之外,还可以使用 axios 的第三方包实现实现数据的请求 之前的学习中,如何发起数据请求? 常见的数据请求类型? get post jsonp JSONP的实现原理 由于浏览器的安全性限制,不允许AJAX访问 协议不同、域名不同、端口号不同的 数据接口,浏览器认为这种访问不安全; 可以通过动态创建script标签的形式,把script标签的src属性,指向数据接口的地址,因为script标签不存在跨域限制,这种数据获取方式,称作JSONP(注意:根据JSONP的实现原理,知晓,JSONP只支持Get请求); 具体实现过程: 先在客户端定义一个回调方法,预定义对数据的操作; 再把这个回调方法的名称,通过URL传参的形式,提交到服务器的数据接口; 服务器数据接口组织好要发送给客户端的数据,再拿着客户端传递过来的回调方法名称,拼接出一个调用这个方法的字符串,发送给客户端去解析执行; 客户端拿到服务器返回的字符串之后,当作Script脚本去解析执行,这样就能够拿到JSONP的数据了; 实现一个JSONP的请求demo const http = require ( 'http' ) ; // 导入解析 URL 地址的核心模块 const

HTTP

こ雲淡風輕ζ 提交于 2020-02-02 23:43:40
http web服务,是目前最重要的服务应用 平台 LNMP HTTP服务程序 Linux: Apache Nginx LAMP LNMP Windows: IIS 从Linux平台移植的Apache,Nginx HTTP协议,超文本传输协议,Hyper Text Transfer Protocol 1.什么是超文本? 包含有超链接(Link)和各种多媒体元素标记的文本.这些超文本文件彼此链接,形成网状(Web),因此又被称为网页( Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。 2.什么是URL,统一资源定位符 一般首页,都会使用index.html index.php index.jsp 3.超文本传输http协议是什么? 是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能 http工作原理 1.用户通过浏览器输入URL,http://www.oldboyedu.com 2.DNS解析将域名解析为IP 3.用户通过IP和web服务器建立TCP连接 4.通过HTTP发送请求 5.服务器解析请求,响应报文 6.浏览器收到响应报文,将代码解析成我们能看懂的页面 7.TCP断开 http的短连接:建立一次tcp的连接,发起一次http的请求,结束,tcp断开。 http的长连接