当客户端与服务器进行交互时,就存在web请求,这种请求都基于统一的应用层协议(http协议)交互数据。它允许将HTML文档从web服务器传送到web浏览器。

http协议是无状态的协议。无状态是指web浏览器和web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,web服 务器返回响应,连接就被关闭了,在服务器端不保留连接的有关信息。也就是说,HTTP请求只能由客户端发起,服务器端不能主动向客户端发送数据。

除了通过浏览器发起HTTP请求,也可以通过linux的curl命令发起HTTP请求。浏览器在HTTP协议方面只不过多了HTML渲染的功能,让用户看到更直观的界面。

URL统一资源定位符:

格式:scheme://login:password@address:port/path/to/resource?query_string#fragment

scheme协议名称:http,https(SSL),ftp,mailto(SMTP)

伪协议:一部分浏览器内部支持的协议并不需要向外部请求资源,而是调用本地浏览器的脚本解析功能或是其他功能。比如:javascript:和data:等。

login:password:访问资源的身份验证,此处身份验证的字段只与URL开端指定的协议有关,和实际请求的内容无关。如果没有身份验证字段,浏览器默认以匿名方式访问资源。

address:服务器地址   port:服务器端口

/path/to/resource:层级文件路径

?query_string:查询字符串(这里会引发跟多安全问题)

#fragment:片段ID

http请求:包括三部分,分别是请求行(请求方法,请求的资源路径,http版本),请求头(请求的主机地址,浏览器的标识),请求体(请求正文,可选,最常出现在POST方法中)。

请求头:

Host:用于指定请求的URL中的主机名称。

User-Agent:提供浏览器或其他发送HTTP请求的客户端软件的相关消息。

Referer:指示当前请求源自哪个URL

Accept:这个字段将客户端允许接受的内容类型传输给服务器端。

Accept-Language:用于声明浏览器可以支持什么语言。

Accept-Encoding:用于声明浏览器可以支持的编码类型。

Cookie:它是一段文本,用来表示请求者的身份(服务器使用Set-Cookie消息头来设置cookie,一般用于身份验证)

Connection:通知通信的另一方,是否在完成HTTP传输后关闭TCP连接。

x-forward-for:它代表请求端的IP,可以有多个,以逗号分开。

HTTP响应:也是包括三部分,响应行(HTTP版本,状态码以及消息"OK"),第二行至末尾的空白行是响应头,之后是响应正文,是服务器向客户端发送的HTML数据。

Accept-Ranges:

Content-Length:指定消息主体的字节长度。

Content-Type:规定消息主体内容类型

Conetent-Language:规定消息主题的语言

Date:表示消息产生的日期和时间。

Server:说明所使用的web服务器软件,和服务器操作系统

Set-cookie:用来向客户端传递/更新cookie。

Location:服务器通过这个头告诉浏览器去访问哪个页面,浏览器收到这个请求之后,会立即访问Location头所指向的页面。通常和302状态码使用。

Refresh:服务器通过Refresh头告诉浏览器定时刷新浏览器。

http请求方法:

GET POST HEAD(不会出现在响应消息里) TRACE(和ping命令类似) OPTIONS(会列出所能支持的方法列表) PUT DELETE CONNECT

HTTP状态码:是HTTP响应的必要部分。

200~299成功  300~399重定向和其他状态信息  400~499客户端错误  500~599服务器端错误

200 OK  301 Moved Permanently 302 Found 303 See Other

404 Not Found  403 Forbidden   401 Unauthorized  400 Bad Request

HTTP代理:

2_http协议详解的更多相关文章

  1. HTTP协议详解(转)

    转自:http://blog.csdn.net/gueter/archive/2007/03/08/1524447.aspx Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的 ...

  2. HTTP协议详解

    Author :Jeffrey 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...

  3. 动态选路、RIP协议&&OSPF协议详解

    动态选路.RIP协议&&OSPF协议详解 概念 当相邻路由器之间进行通信,以告知对方每个路由器当前所连接的网络,这时就出现了动态选路.路由器之间必须采用选路协议进行通信,这样的选路协议 ...

  4. ASP.NET知识总结(3.HTTP协议详解)

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  5. 接口测试之HTTP协议详解

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

  6. 计算机网络(12)-----HTTP协议详解

    HTTP协议详解 http请求 http请求由三部分组成,分别是:请求行.消息报头.请求正文 (1)请求行 请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Metho ...

  7. OSPF协议详解

    CCNP OSPF协议详解 2010-02-24 20:30:22 标签:CCNP 职场 OSPF 休闲 OSPF(Open Shortest Path Fitst,ospf)开放最短路径优先协议,是 ...

  8. HTTP协议详解(真的很经典)

    HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/1.0 ...

  9. HTTP协议详解--转载http://blog.csdn.net/gueter/article/details/1524447

    引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...

随机推荐

  1. Reverse Integer - 反转一个int,溢出时返回0

    Reverse Integer Reverse digits of an integer. Example1: x = 123, return 321Example2: x = -123, retur ...

  2. nyoj_5:Binary String Matching

    简单字符串匹配 题目链接 #include<iostream> #include<cstring> using namespace std; int fun(char*aa,c ...

  3. ngin隐藏版本号

    Nginx默认是显示版本号的,如:   这样就给人家看到你的服务器nginx版本,这样暴露出来的版本号就容易变成攻击者可利用的信息.所以,从安全的角度来说,隐藏版本号会相对安全些! 配置如下: 修改n ...

  4. 用Maven创建web项目

    使用eclipse插件创建一个web project 首先创建一个Maven的Project如下图 我们勾选上Create a simple project (不使用骨架) 这里的Packing 选择 ...

  5. Css元素居中设置

    你对DIV CSS居中的方法是否了解,这里和大家分享一下,用CSS让元素居中显示并不是件很简单的事情,让我们先来看一下CSS中常见的几种让元素水平居中显示的方法. DIV CSS居中 用CSS让元素居 ...

  6. Fiddler基础使用一之捕获https请求

    fiddler抓包工具: http协议cookieFiddler是一个调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的"进出"Fiddle ...

  7. 简单设置android启动画面

    1.新建Activity,以及layout文件夹里的xml文件2.将新建Activity在AndroidManifest中设为默认Activity,并且添加:android:theme="@ ...

  8. Hardcoded string XXX,&…

    eclipse布局文件警告:Hardcoded string XXX, should use @string resource

  9. HDOJ 6069 素数筛法(数学)

    Counting Divisors Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Oth ...

  10. NYOJ--95--multiset--众数问题

    /* Name: NYOJ--95--众数问题 Date: 20/04/17 16:02 Description: multiset水过 */ #include<set> #include ...