HTTP协议基础知识

HTTP协议重要性:

无论是以后使用webservice,还是用reset做大型架构,都离不开对HTTP协议的认识。可以简化的说:

webservice=HTTP协议+XML

rest=HTTP协议+json

各种api也是用HTTP+XML/json来实现的

ajax的学习也需要HTTP协议基础

需要掌握的知识包括:

1、PHP+socket编程发送HTTP请求

2、PHP批量发帖

3、HTTP协议防盗链

优化:HTTP协议与缓存控制

HTTP协议与cookie

持久连接


HTTP请求信息和响应信息的格式请求:

1、 请求行

2、请求头信息

3、请求主体信息

请求行又分3部分:

请求方法    请求路径    所用协议

请求方法有:GET POST PUT DELETE TRACE OPTIONS

在window控制台中执行命令:telnet 127.0.0.1 80 然后按下“ctrl+]”键,在按回车,在其中输入命令,就可以看到命令的回显

 


HTTP请求和响应方式总结


常用的请求方法有:

GET POST HEAD PUT TRACE DELETE OPTIONS

注:这些请求方法虽然http协议里规定的,但web服务器未必允许或支持这些方法

HEAD方法:只返回响应头信息


PUT方法:向网站上传文件或内容


TRACE方法:比如使用代理访问某一个网站,如果想查看代理有没有修改HTTP请求,可以使用trace来测试一下,被实际请求的目标网站就会把最后收到的请求返回给用户。

OPTIONS方法:返回目标服务器可以支持的请求方法。


状态码和状态文字:

状态码是用来反映服务器的相应情况的。

最常见的有200 OK, 404 NOT FOUNT, 503 INTERNAL ERROR

状态文字使用阿里描述状态码的,便于人查看。

状态码根据相应状态分为5个系列:


常见请求成功状态码

200-服务器成功返回网页

301/2-永久/临时重定向。307重定向:post的表单数据重定向时任然使用POST方法。

编写PHP程序:

<?php
header('location: http://www.baidu.com');
//
header('location: http://www.baidu.com', true, 301);  //永久重定向

 在浏览器中访问PHP程序,将会有如下输出: 
 

但是如果服务器上有两个脚本文件,比如a.php和b.php,a.php重定向到了b.php,而a.php中使用了表单(POST)提交数据,那么数据将会丢失。GET方法提交的数据不会受影响。

如果想重定向之前的网页的POST数据仍然传送给重定向到的网页,应该使用307重定向。

304-未修改: 浏览器在请求资源时,如果服务器告诉浏览器未修改,那么浏览器就是用本地缓存,而免了去请求服务器,减轻服务器传输压力,加快浏览器端响应时间

如果浏览器请求了服务器上的一张图片,如果浏览器端将图片缓存了,那么当刷新再次请求时,浏览器会发送途中箭头所指内容,告诉服务器,如果该资源在那个时间之后修改了,就会重新传送资源;或者第二行的ETAG不匹配,也要重新传送资源。服务器并不知道客户端有没有缓存,而是浏览器高速服务器的。

因此对于网站建设,对于不经常改变的资源例如图片等,可以提高缓存时间,减少重复传输。


常见请求失败状态码

404-请求的网页不存在

503-服务器暂时不可用

500-服务器内部错误









猜你喜欢

转载自blog.csdn.net/GorgeousChou/article/details/79928277