代码改变世界

http协议

2017-08-24 13:02  谭丽#  阅读(186)  评论(0编辑  收藏  举报

http中文名称:超文本传输协议(HTTPHyperText Transfer Protocol,超文本转移协议)是互联网上应用最为广泛的一种网络协议,属于应用层(直接和用户打交道)的协议(共7层协议),管理和控制消息使用TCP(0-65535个端口)/IP协议(传输控制协议和地址协议,三次握手和四次挥手)。

http协议的扩展->HTTPS(加s的代表加密)

物理

数据链路

网络

传输

会话

表示应用

 

与端口有关的两个协议:

TCP协议(传输控制协议,0-65535个端口):传输文字图片,传递可靠消息,保证可靠

UTP协议(用户数据报协议,0-65535个端口):

 

什么是HTTP协议HTTP协议就是互联网通信标准

 

目前使用版本:http1.1

 

最新版本:http2.0

 

特点:

1.支持客户/服务器模式

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径

3.灵活:HTTP允许传输任意类型的数据对象

4.无连接:无连接的含义是限制每次连接只处理一个请求

5.无状态:HTTP协议是断开式的协议该协议没有记忆能力,没有连接状态。

所谓断开式:就是指通过HTTP协议发送的请求,无论发送多少次,每一次都会被当成全新的请求,服务器并不知道这一次请求和上一次请求有什么关系

 

 

请求方式8种

 1、OPTIONS

返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

2、HEAD

向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。

3、GET

向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中,其中一个原因是GET可能会被网络蜘蛛等随意访问。Loadrunner中对应get请求函数:web_link和web_url

4、POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form

5、PUT

向指定资源位置上传其最新内容

6、DELETE

请求服务器删除Request-URL所标识的资源

7、TRACE

回显服务器收到的请求,主要用于测试或诊断

8、CONNECT

HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

注意:

1)方法名称是区分大小写的,当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Mothod Not Allowed);当服务器不认识或者不支持对应的请求方法时,应返回状态码501(Not Implemented)。

2)HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

 

表单处理的要点

 

get和post的区别(标准http协议)

1)Get
它用于获取信息,注意,他只是获取、查询数据,也就是说它不会修改服务器上的数据,从这点来讲,它是数据安全的,而稍后会提到的Post它是可以修改数据的,所以这也是两者差别之一了。

2)
Post,它是可以向服务器发送修改请求,从而修改服务器的,比方说,我们要在论坛上回贴、在博客上评论,这就要用到Post了,当然它也是可以仅仅获取数据的。

 

  1GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;例 如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如: %E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII 

  POST提交:把提交的数据放置在是HTTP包的包体中。上文示例中红色字体标明的就是实际的传输数据 

     因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变 

(2)传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。

而在实际开发中存在的限制主要有: 

GET:特定浏览器和服务器对URL长度有限制,例如 IEURL长度的限制是2083字节(2K+35)。对于其他浏览器,如NetscapeFireFox等,理论上没有长度限制,其限制取决于操作系 统的支持。 

因此对于GET提交时,传输数据就会受到URL长度的 限制。 

POST:由于不是通过URL传值,理论上数据不受 限。但实际各个WEB服务器会规定对post提交数据大小进行限制,ApacheIIS6都有各自的配置。 

(3)安全性: 

POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的安全不是同个概念。上面 安全的含义仅仅是不作数据修 改,而这 里安全的含义是真正的Security的含义,比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击 

 

  文件上传(file) :

  1. 客户端上传设置  file控件
  2. 在服务器端通过PHP处理上传的文件

①  关于PHP配置文件中的指令

②     $_FILES多维数组($_GET,$_POST,$_GLOBALS,$_FILE)

③ PHP中为文件上传提供的两个函数

 

 

 

限制文件的格式/大小怎样处理

file_uploads:确定服务器上的PHP脚本是否可以接受HTTP文件上传

 

upload_max_filesize:限制PHP处理上传文件大小的最大值,这个值不能超过post_max_size

post_max_size:限制通过post方法可以接收信息的最大值

upload_tmp_dir:上传文件的临时路径

max_file_uploads:最大允许上传的文件数

 

$_GET[]

$_POST[]

$_GLOBALS[]

$_COOKIE[]

$_SESSION[]

$_REQUIRE[]

$_FILES[]

$_SERVER[]

$_ENV[]