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-服务器内部错误