一个原生的http url请求的全过程
2016-12-07 21:26
316 查看
无论是
1)通过JQuery的ajax方式,发起一个http url请求。
2)通过Firefox的HttpRequester插件(参数可以写入Content to Send、Headers、Parameters传递给后端),发起一个http url请求。
3)通过在浏览器地址栏,输入一个地址(http://127.0.0.1:8080/tesProject/user/modify?id=XXXXX),发起一个http url请求。
最原生的http url请求的过程是这样的,无论以上是哪一种http url请求,执行过程其实都是一样的:
1)通过JQuery的ajax方式,发起一个http url请求。
2)通过Firefox的HttpRequester插件(参数可以写入Content to Send、Headers、Parameters传递给后端),发起一个http url请求。
3)通过在浏览器地址栏,输入一个地址(http://127.0.0.1:8080/tesProject/user/modify?id=XXXXX),发起一个http url请求。
最原生的http url请求的过程是这样的,无论以上是哪一种http url请求,执行过程其实都是一样的:
通常情况下,HTTP协议的工作原理很好理解,用户通过客户端向服务端发起一个请求,创建一个TCP连接,指定端口号,默认是80,然后连接到服务器工作。在那个端口监听浏览器请求。一旦监听到客户端请求,分析请求类型后,服务器会向客户端返回一个响应状态,比如"HTTP/1.0 404 OK",同时会返回特定的数据内容,如请求的资源,错误代码,其它状态信息等等。 HTTP协议的报文格式 HTTP协议的请求报文 当浏览器向服务器发送一个请求到Web服务器,它发送一个数据块,或请求信息, HTTP请求信息包括3部分: 请求方法URI协议/版本; 请求头(Request Header); 请求正文; 下面是一个HTTP请求的示例: GET/test.jsp HTTP/1.1 Accept:image/test.image/jpeg,*/* Accept-Language:zh-cn Connection:Keep-Alive Host:222.35.232.103 User-Agent:Mozila/5.0(compatible;MSIE5.01;Window NT5.0) Accept-Encoding:gzip,deflate username=linuxidc&password=linuxidc (1)请求方法URI协议/版本 请求的第一行是“方法/内容URL协议/协议版本名称”: GET/test.jsp HTTP/1.1 上面的代码中,“GET”说明请求方法,“/test.jsp”表示网络资源,中间空格,最后说明协议和协议的版本。 根据HTTP标准,HTTP请求可以使用多种不同的请求方法。例如:HTTP1.1允许支持七种请求方法(也叫“动作”):GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。日常开发中,GET和POST是最常用的方法,主要在相关的Web开发中。 URL路径指定了要访问的网络资源。一般来说,我们需要的是相对路径,因为确定资源位置,知道网络资源相对于服务器的根目录的路径就可以,所以以“/”开头。在头信息结束时,声明了通信过程中HTTP协议版本的使用版本。 需要注意,方法名称很重要的一点是严格区分大小写。有些时候,某个请求所针对的资源可能不支持对应的请求方法,会通过不同的状态码给出响应。例如,服务器将返回一个状态码405(方法不允许),当请求服务器或方法不理解不支持相应的时间,返回一个状态码501(没有实现)。 (2)请求头(Request Header) 请求头包含了一些客户环境和请求的内容信息。例如,请求头可以声明浏览器内核和语言使用,请求的长度等。 Accept:image/test.image/jpeg.*/* Accept-Language:zh-cn Connection:Keep-Alive Host:222.35.232.103 User-Agent:Mozila/5.0(compatible:MSIE5.01:Windows NT5.0) Accept-Encoding:gzip,deflate. (3)请求正文 请求正文和请求头要有空行。这个空行必须存在,说明结束请求头传输,开始传输正文请求。请求正文中一般包含很多信息,例如用户提交的用户名和密码之类的登陆信息:userlogin=linuxidc¤tpwd=linuxidc 在真实应用中,协议的请求正文可以包含大量的信息,而不是如示例的HTTP请 求中一样,请求正文只有简单的一行数据。 HTTP协议的响应报文 和请求报文类似,HTTP响应主要也是3个部分构成: (1)协议状态版本代码描述 (2)响应头(Response Header) (3)响应正文 下面是一个HTTP响应的示例: HTTP/1.1 200 OK Server:Apache Tomcat/7.0.1 Date:Mon,6Oct2014 13:23:42 GMT Content-Length:102 <html> <head> <title>HTTP响应文件<title> </head> <body> 这是HTTP响应文件! </body> </html> 客户端向服务器发送请求,和请求报文类似,服务器会以状态行响应。 响应报文包括:HTTP协议的版本、结果编码以及其他的必要信息,如实体信息等。响应类别不同,响应报文里可以包含或者不含实体内容。 HTTP响应报文的首先是以状态行开始,这些可以参考示例的代码。 响应头也就是报文首部,和请求头首部一样,包含重要的信息,例子中我们可以看到,比如日期时间和服务器类型以及内容长度和数量等。 |
相关文章推荐
- Linux 网络编程详解八
- TCP/IP协议栈初始化(三) OS大人inet socket已经准备完毕
- 搭建https服务--获取https证书(1)
- TCPDUMP/LIBPCAP 1-由零开始
- Tcp、udp区别 基于包,基于流 ?
- 秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial
- 原生的http url请求,怎么往后台传参?
- LINUX 下 简单 网络 I/O 性能 吞吐 评估
- Firefox的HttpRequester插件,传递参数,的解释
- 如何利用离散Hopfield神经网络进行数字识别(2)
- 现已搬迁至http://lightina.cn
- 安卓--网络/GPS/WIFI/3G是否打开的简单封装
- 视觉注意力的循环神经网络模型
- 深入分析Android监听网络变化的坑
- 网游新规来袭,玩家还要为《阴阳师》费氪伤肝吗?
- tomcat https配置
- AFNetworking3.1.0源码分析(五)详解AFHTTPRequestSerializer 之创建NSMutableURLRequest
- Windows下常用的网络命令
- apache配置https
- serv-u中如何映射网络驱动器