http请求

HTTP问题整理

主宰稳场 提交于 2020-01-10 16:40:00
https://www.cnblogs.com/haonanZhang/p/6362233.html https://www.cnblogs.com/cbslock/p/10139160.html https://www.cnblogs.com/yoyoketang/p/10137927.html 一、一个页面从输入url到加载完成,中间经历了什么。 1、 首先,在浏览器地址栏中输入url。解析url地址是否合法 2、 浏览器先查看 浏览器缓存 -系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作 浏览器缓存 :浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求; 操作系统缓存: 如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存); 路由器缓存 :如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存; ISP缓存: 若上述均失败,继续向ISP搜索。 3、 在发送http请求前,需要 域名解析 (DNS解析) (DNS(域名系统,Domain Name System)是互联网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住IP地址。) ,解析获取相应的IP地址 4、 浏览器向服务器发起 tcp连接 ,与浏览器建立

Go HTTP编程

家住魔仙堡 提交于 2020-01-10 14:34:49
目录 net/http介绍 HTTP服务端 默认的Server 自定义Server HTTP客户端 基本的HTTP/HTTPS请求 GET请求示例 带参数的GET请求示例 Post请求示例 自定义Client 自定义Transport net/http介绍 Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。 HTTP服务端 默认的Server 首先,我们编写一个最简单的Web服务器。编写这个Web服务只需要两步: 注册一个处理器函数( 注册到DefaultServeMux ); 设置监听的TCP地址并启动服务; 对应到我们的代码里就是这样的: package main import ( "fmt" "net/http" ) //say hello to the world func sayHello(w http.ResponseWriter, r *http.Request) { //n, err := fmt.Fprintln(w, "hello world") _, _ = w.Write([]byte("hello world")) } func main() { //1.注册一个处理器函数 http.HandleFunc("/", sayHello) //2

http请求之get和post的区别

跟風遠走 提交于 2020-01-10 14:27:00
http请求之get和post的区别 前言: 大家现在度娘一下,查得最多的区别,可能就是: “Get把参数写在URL中,Post通过请求体来传参的” “GET没有POST安全,因为Get参数直接显示在URL上” “Get请求在URL中传送的参数是有长度限制的,而POST是没有的” 但是,真相是这样的吗?!!!真相永远只有一个!!! 先分析一波: GET和POST与数据如何传递没有关系??   GET和POST是由HTTP协议定义的。那么使用哪个方式与应用层的数据如何传输是没有相互关系的。从而,HTTP就没有要求,POST一定要放到请求体里面,GET就一定要放到URL里面。   在HTML标准中,是有着类似的定义。但这只是HTML标准对HTTP协议的用法的约定。也就是规范上说,无区别。   那么,这个说法是从何而来的呢?是因为有各种浏览器等软件的实现,就变成了我们现在熟知的现象,GET要用URL传参,POST用body传参。 HTTP协议对GET和POST有没有对长度的限制??   HTTP协议明确地指出了,HTTP请求头和请求体都没有长度的要求。   而对于URL长度上的限制,有两方面的原因造成:   1. 浏览器。据说IE对URL长度会限制在2048个字符内。但是就我所知,firefox是支持10W以上的长度。   2. 服务器。服务器处理超长的URL本身就是一种负担

HTTP协议的请求方法

这一生的挚爱 提交于 2020-01-10 10:48:21
HTTP概念: HTTP是一个基于TCP/IP通信协议来传递数据,包括html文件、图像、结果等,即是一个客户端和服务器端请求和应答的标准 1.http无连接:限制每次连接只处理一个请求,服务端完成客户端的请求后,即断开连接。(传输速度快,减少不必要的连接,但也意味着每一次访问都要建立一次连接,效率降低) 2.http无状态:对于事务处理没有记忆能力。每一次请求都是独立的,不记录客户端任何行为。(优点解放服务器,但可能每次请求会传输大量重复的内容信息) 3.客户端/服务端模型:客户端支持web浏览器或其他任何客户端,服务器通常是apache或者iis等 4.简单快速 5.灵活:可以传输任何类型的数据 以下图表展示了HTTP协议通信流程: HTTP 消息结构 HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。 一个HTTP"客户端"是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个HTTP的请求的目的。 一个HTTP"服务器"同样也是一个应用程序(通常是一个Web服务,如Apache Web服务器或IIS服务器等),通过接收客户端的请求并向客户端发送HTTP响应数据。 HTTP使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接。

Fiddler4抓包工具使用教程一

心已入冬 提交于 2020-01-10 10:41:04
转自:https://www.cnblogs.com/GreenLeaves/p/6971452.html 本文参考自http://blog.csdn.net/ohmygirl/article/details/17846199,纯属读书笔记,加深记忆 1、抓包工具有很多,为什么要使用Fiddler呢?原因如下: a.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。 b.Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用。 c.Httpwatch也是比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力,而Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。 2、what is Fiddler? Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求

nodejs之express 应用

蓝咒 提交于 2020-01-10 06:47:49
实例一 输出hello,world //express.js 服务端 // express module demo var express = require ( "express" ) ; var app = express ( ) ; app . get ( '/' , function ( req , res ) { res . send ( 'hello,world\n' ) ; } ) app . get ( '/user' , function ( req , res ) { res . send ( '/user get...\n' ) ; } ) var server = app . listen ( 8080 , function ( ) { var host = server . address ( ) . address ; var port = server . address ( ) . port ; console . log ( " http://%s:%s" , host , port ) ; } ) 在浏览器防卫或者curl 执行结果如下: 知识点 Express 应用使用回调函数的参数: request 和 response 对象来处理请求和响应的数据。 app . get ( '/' , function ( req , res ) { //

Fiddler4抓包工具使用教程

戏子无情 提交于 2020-01-10 04:52:38
本文参考自http://blog.csdn.net/ohmygirl/article/details/17846199,纯属读书笔记,加深记忆 1、抓包工具有很多,为什么要使用Fiddler呢?原因如下: a.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。 b.Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用。 c.Httpwatch也是比较常用的http抓包工具,但是只支持IE和firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力,而Fiddler2 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler。 2、what is Fiddler? Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一,它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大

Nginx之一

孤者浪人 提交于 2020-01-10 00:04:37
libevent :高性能的网络库   epoll() nginx调用了libevent库中的epoll Epoll --异步模型   支持一个进程打开大数目的socket描述符   IO效率不随FD数据增加而线性下降   使用mmap加速内核与用户空间的消息传递   边缘出发和水平触发 Nginx 采用C进行编写,不论是系统资源开销还是CPU使用率都比Perlbal要好很多 优点:    主要应用类别:   使用Nginx结合FastCGI运行PHP、JSP、Perl等程序   使用Nginx作反向代理、负载均衡、规则过滤   使用Nginx运行静态HTML页面、图片   Nginx与其他新技术的结合应用 基本功能:   静态资源的web服务器,能缓存打开的文件描述符;   http、smtp、pop3协议的反向代理服务器;   缓存加速、负载均衡;   支持FastCGI(fpm、LNMP),uWSGI(Python);   模块化(非DSO机制)、过滤器zip、SSI及图像的大小调整;   支持SSL 扩展功能:   基于名称和IP的虚拟主机;   支持平滑升级,支持url rewrite,支持路径别名;   支持keepalive;   支持基于IP及用户访问控制;   支持速率限制,支持并发数限制  三、Nginx的模块与工作原理   Nginx由内核和模块组成

Node入门

谁说胖子不能爱 提交于 2020-01-09 21:54:18
服务端JavaScript JavaScript最早是运行在浏览器上的,浏览器只是提供了一个上下文,它定义了JavaScript可以做什么,并没有指明JavaScript语言本身可以做什么,实际上,JavaScript是一门完整的语言,可以使用在不同的上下文中,要实现在后台运行JavaScript代码,代码需要先被解释然后执行,Node.js的原理就是如此,他使用Google的V8虚拟机来解释和执行JavaScript代码,因此,NodeJs事实上既是一个运行时环境,同时又是一个库。 Node.js的Web应用 一个基础的HTTP服务器 新建一个server.js文件并写入如下代码: var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Hello World"); response.end(); }).listen(8888); 使用Node.js执行脚本 node server.js 在浏览器访问http://localhost:8888/,可以看到网页。 用这样的代码也可以实现: var http = require("http");

ASPNET_WEBAPI快速学习02

孤街浪徒 提交于 2020-01-09 03:04:20
这部分内容的学习,已经放了大半年时间了,果断补充上,尽早将过去遗留的老技术坑都补上。首先将介绍 服务幂等性 的概念和相关解决方案,这部分也将是本文的理解难点,由于WebAPI是一种Restful风格服务的实现方式,其遵循HTTP标准方法,因此理解好这部分概念,对于提供良好的业务服务显得非常重要。之后则将介绍 SignalR 这一长连接通讯的集成解决方案的概念和实践,这部分在交互式的Web场景中非常有效。最后将补充 Owin、IOC、EnterpriseLibrary 等相关知识,这些也都是.NET程序员比较容易忽视的知识点,这些知识在快速搭建Solution上有很大的帮助。 最早接触这个概念还是在一次面试的过程中,当时记得自己只能是通过卖萌将这一概念一笔带过,由于当时的项目实践相对较少,且被微软便捷的服务搭建所欺骗,以为搭建一个webService只用在IDE中添加有一个.asmx就万事大吉了,其他项目通过一个服务引用就算是SOA实现了(WCF额外需要配置一下终结点),其实对于整个服务的概念完全是个门外汉。 那么在实际中,搭建一个服务需要注意那些问题呢?接下来通过一个简单的表格来描述。 关注因素 诠释 通讯协议的选取 例如常见的TCP、HTTP、SOAP等,实际上任何协议都可以作为服务的载体,只要适合相应的场景即可 URL 服务的地址,服务的消费者可以通过这个地址请求服务 安全性