文档章节

http协议常用功能整理

落叶刀
 落叶刀
发布于 2016/01/02 10:24
字数 1158
阅读 74
收藏 1
点赞 0
评论 0

本部分内容整理于互联网

HTTP定义:

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种无状态通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

HTTP无状态机制:
http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.

http工作流程:一次HTTP操作称为一个事务,其工作过程可分为四步

 1. 当你在浏览器输入URL http://www.baidu.com 的时候,浏览器发送一个Request去获取百度的html.  服务器把Response发送回给浏览器.

2. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件。

3. 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

4. 等所有的文件都下载成功后。 网页就被显示出来了。

 URL详解
 URL(Uniform Resource Locator) 地址用于描述一个网络上的资源,  基本格式如下

schema://host[:port#]/path/.../[?query-string][#anchor]
scheme               指定低层使用的协议(例如:http, https)

host                   HTTP服务器的IP地址或者域名

port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明.

path                   访问资源的路径

query-string       发送给http服务器的数据

anchor-             锚

Get和Post方法的区别
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.

1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body中.

2. GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.

3. GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

4. GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

Session机制
Session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为 session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个 session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个 session id将被在本次响应中返回给客户端保存。
Cookie的流程
服务器在响应消息中用Set-Cookie头将Cookie的内容回送给客户端,客户端在新的请求中将相同的内容携带在Cookie头中发送给服务器。从而实现会话的保持

 

© 著作权归作者所有

共有 人打赏支持
落叶刀
粉丝 38
博文 86
码字总数 98718
作品 2
浦东
运维
要做好性能测试,该掌握些什么?

今天有同行在blog上留言,问“想从功能测试转向性能测试,但不知道需要哪些了解哪些知识,及怎样进行一个系统的学习”。这类问题之前也被问到很多次了,所以这次干脆整理一下,发个主题供同行...

不最醉不龟归 ⋅ 2016/09/29 ⋅ 0

Dubbo 发布恢复维护后的第一个版本 2.5.4

Dubbo 发布了恢复维护后的第一个版本 2.5.4,主要是解决 issues 和依赖升级。 修复的 issue: 不能优雅停机的问题 MonitorFilter 监控统计功能阻塞 rpc 流程 动态配置:设置指定的 consumer...

fbf ⋅ 2017/09/07 ⋅ 75

我的开源项目mylibs

前段时间把mylibs放到sourceforge上了,N多年前就开始为mylibs实现代码了,本来叫mylib,上传的时候发现sourceforge上已经有mylib项目了,所以改名为mylibs。 当初开始写这个项目的时候并没有...

lucasli ⋅ 2011/03/30 ⋅ 0

Troubleshooting(三):网络

前言 在 Troubleshooting 过程中,检查完进程信息后,接下来就是排查网络情况的时候了,初略翻过《TCP/IP 详解卷一:协议》这本书,简直跟看《深入理解 Linux 内核》一毛一样,各种协议各种底...

诸葛孔明亮 ⋅ 2016/10/27 ⋅ 0

主流webservice框架整理

webserice 其实就是一套平台标准,采用soap协议通过http来调用。 常用的webserice框架主要有: 1. JDK自带的webserice框架;需要jdk1.6或者以上。在jdk当中自带了wsimport和wsgen两个可以生成...

yangkai_2005 ⋅ 2012/04/23 ⋅ 3

Linux的网络管理命令使用总结

摘要: Linux常见的网络访问与管理命令整理 1.curl 命令常用来访问网址 curl www.test.com 访问www.test.com 对于一些需要证书访问的 curl -E test.pem https://www.test.com (一般智能设备的...

前端_牛牛 ⋅ 2016/10/06 ⋅ 0

用Helper对类的行为进行修饰以便复用(附:外三篇)

本文是 代码“中间地带”的封装与复用 的后续。 咱不谈设计模式这种“高档”货,也不谈M××,只谈怎么消除Copy+Paste,消除拖窗体设置属性这类耗时、易错的动作。 前些天和我徒弟聊天,他沾...

最美的回忆 ⋅ 2017/09/01 ⋅ 0

httpcomponents 4.5.2 简单使用

HttpComponents 也就是以前的httpclient项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协议最新的版本和建议。不过现在的 HttpCo...

王念博客 ⋅ 2016/04/08 ⋅ 0

学习笔记之urllib篇

我们在写爬虫的时候经常会用到urllib模块,我就到网上搜集了一下urllibmokuai的使用方法,整理了一下 模块:urllib 环境:windows python3版本中已经将urllib2、urlparse、和robotparser并入...

董小洋 ⋅ 2017/08/30 ⋅ 0

CURL常用命令(转载)

CURL常用命令 原文地址: http://www.thegeekstuff.com/2012/04/curl-examples/ 参考地址:http://www.cnblogs.com/gbyukg/p/3326825.html 备用记录下 下载单个文件,默认将输出打印到标准输...

bomby ⋅ 2017/07/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

UI ,前端框架选型

Flat-UI

miaojiangmin ⋅ 7分钟前 ⋅ 0

Istio Service Mesh 教程

Istio Service Mesh 教程 作者 宋净超 | 5400字 | 阅读大约需要11分钟 | 归档于istio | 发表于 2018-05-22 标签 #Istio #教程,来自 https://servicemesher.github.io/blog/istio-service-m...

openthings ⋅ 12分钟前 ⋅ 0

scala swing

scala swing组件的库 https://github.com/scala/scala-swing scala swing的API文档 https://www.scala-lang.org/api/2.9.1/scala/swing/package.html...

whoisliang ⋅ 16分钟前 ⋅ 0

CentOS安装配置Nginx

安装依赖 yum install gcc yum install pcre-devel yum install zlib zlib-devel yum install openssl openssl-devel //一键安装上面四个依赖 yum -y install gcc zlib zlib-devel pcre-deve......

临江仙卜算子 ⋅ 23分钟前 ⋅ 0

开源 java CMS - FreeCMS2.8 依申请公开

项目地址:http://www.freeteam.cn/ 依申请公开 1. 转交申请公开 用户可以把申请公开转交给其他人办理,系统会记录此申请公开的转交记录。 注意:同时只能转交一个申请公开。 选择需要转交的...

freeteam ⋅ 27分钟前 ⋅ 0

以太坊 web3.py 签名转账

以太坊 web3.py 签名转账 本文节选自电子书《Netkiller Blockchain 手札》 Netkiller Blockchain 手札 Mr. Neo Chan, 陈景峯(BG7NYT) 中国广东省深圳市龙华新区民治街道溪山美地 518131 +86...

netkiller- ⋅ 32分钟前 ⋅ 0

年薪40W的程序员必会的技术有哪些?

很多人在问我,程序员如何拿高薪,如何做到年薪40W+,其实总结出来还是一句话,你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢? 下面是我的一个总结...

码代码的小司机 ⋅ 33分钟前 ⋅ 0

jesque-spring使用及源码分析

1.使用 jesque结合spring使用,步骤如下: 1.1 在项目中添加maven依赖 <dependency> <groupId>net.lariverosc</groupId> <artifactId>jesque-spring</artifactId> <version>1.0.0</ve......

Funcy1122 ⋅ 34分钟前 ⋅ 0

OSChina 周二乱弹 —— 加班的代码不要枉费了我的童子功

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《29》- 未完成乐队 《29》- 未完成乐队 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :#看球提醒# 02:00 巴西v...

小小编辑 ⋅ 今天 ⋅ 16

Docker Swarm的前世今生

概述 在我的《Docker Swarm集群初探》一文中,我们实际体验了Docker Swarm容器集群技术的魅力,与《Kubernetes实践录》一文中提到的Kubernetes集群技术相比,Docker Swarm没有Kubernetes显得...

CodeSheep ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部