您的位置:首页 > 理论基础 > 计算机网络

HTTP 随笔

2016-06-22 22:46 337 查看
浏览器发送HTTP请求主要分为三部分请求行,Response Headers(响应头信息)和Request Headers(请求头信息)。

请求行有分为三部分:请求方法,请求路径和请求协议

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


例子:使用Telnet发送GET请求





按ENTER后进入Telnet,按Ctrl+],再按ENTER打开回显功能。

输入请求行

GET /test.php HTTP/1.1

Host: localhost

然后按两次ENTER得到响应信息和响应内容




例子:使用Telnet发送POST请求





发送POST请求必须指明Content-Type和Content-length,输入完请求行后需空一行才能输入要提交的POST数据


例子:使用Telnet发送HEAD请求


HEAD请求和GET请求相似,但是HEAD请求只会返回响应头信息而不会返回响应内容



TRACE请求方法是用于判断HTTP请求经过了多少层代理和代理服务器的信息。

OPTIONS请求方法是返回服务器可用的请求方法


304状态码说明

浏览器在请求图片资源或者文件(JavaScript,CSS)资源的时候,服务器端会返回etag和Date信息,浏览器会将这些资源存放在本地。当浏览器再次请求图片资源或者文件(JavaScript,CSS)资源的时候,会将带上if-modified-since(Date内容)和if-none-match(etag内容)一起发送到服务器,服务器会比对这两个信息,如果与服务器保留的信息相同,则返回304状态码告诉浏览器从本地获取资源而不会从服务器响应返回资源。



301,302,307状态码说明

301(永久重定向)和302(临时重定向)是负责重定向,但是在使用301和302进行重定向的时候会丢失POST提交的数据,这时候可以使用307状态码进行重定向就能保留POST数据。



例子:图片防盗链





请求资源文件的时候在请求头信息中会带refer信息,服务器根据这个refer信息来判断请求发起源是否是允许的域名,如果是非允许的域名则重定向到其他页面,从而进行防盗链。(当然有时候发起请求时候可能不会带Renferer内容,这时候可以通过判断host信息来进行防盗链)

在项目目录下新建.htaccess并写入(使用对web容器是Apache且需要开启rewrite模块)




例子:HTTP协议与内容压缩


在http-conf开启deflate模块(Apache服务器)

在http-conf写入



压缩前



压缩后



备注:一般情况下是不会对图片文件,视频影音文件进行压缩,只会对文本类的文件进行压缩(如:文本文件,HTML文件,JavaScript文件,样式文件等),因为文本类文件压缩效果好,而图片文件,视频影音文件的压缩效果很差,同时服务器进行压缩本身就很消耗CPU资源。


服务器是如何知道浏览器支持哪种类型的压缩?


浏览器在发送请求的时候会在Request Headers加入

告诉服务器。服务器会根据这个判断是否要进行压缩。


例子:comet反向AJAX


反向AJAX的原理是当浏览器获取完Content-length长度的字节后会断开HTTP连接,而反向AJAX就是不给Content-length指定长度使得HTTP请求一直连接着。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: