当客户端与服务器进行交互时,就存在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. JAVA的高并发编程

    一.多线程的基本知识 1.1进程与线程的介绍 程序运行时在内存中分配自己独立的运行空间,就是进程 线程:它是位于进程中,负责当前进程中的某个具备独立运行资格的空间. 进程是负责整个程序的运行,而线程是 ...

  2. Java并发编程(2):线程中断(含代码)

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  3. nopCommerce 3.9 大波浪系列 之 路由扩展 [多语言Seo的实现]

    一.nop种的路由注册 在Global.asax,Application_Start()方法中会进行路由注册,代码如下. public static void RegisterRoutes(Route ...

  4. eclipse上传新项目到GitHub

    1.登录gibhub,创建一个仓库 2.提交本地仓库 右键本地项目 选择git,然后点击next 如图: 再右键项目,commit项目,这是提交到本地git 3.接下来提交到github 输入gith ...

  5. guava缓存底层实现

    摘要 guava的缓存相信很多人都有用到, Cache<String, String> cache = CacheBuilder.newBuilder() .expireAfterWrit ...

  6. SetConsoleScreenBufferSize 函数--设置控制台屏幕缓冲区大小

    SetConsoleScreenBufferSize函数 来源:https://msdn.microsoft.com/en-us/library/windows/desktop/ms686044(v= ...

  7. AI人工智能-Python实现人机对话

    [前言] AI 在人工智能进展的如火如荼的今天,我们如果不尝试去接触新鲜事物,马上就要被世界淘汰啦~ 本文拟使用Python开发语言实现类似于WIndows平台的“小娜”,或者是IOS下的“Siri” ...

  8. 仿PC版微信的练手项目(可实时通讯)

    仿PC版微信的DEMO 本项目是由一个仿PC版微信的vue前端项目,和一个使用leancloud进行数据存储的.提供WebSocket的node后端项目构成. 本项目使用的技术栈:vue + vue- ...

  9. WordPress中函数钩子hook的作用及基本用法

    WordPress 的插件机制实际上只的就是这个 Hook 了,它中文被翻译成钩子,允许你参与 WordPress 核心的运行,是一个非常棒的东西,下面我们来详细了解一下它.钩子分类 钩子分为两种,一 ...

  10. 数据结构随笔-php实现栈

    栈(Stack)满足后进先出(LIFO)的原则: 下面利用php实现栈的相关操作: 本实例栈的基本操作: 入栈(push):向栈内压入一个元素,栈顶指针指向栈顶元素 出栈(pop): 从栈顶去除元素, ...