HTTP 随笔
浏览器发送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请求一直连接着。
HTTP 随笔的更多相关文章
- AI人工智能系列随笔
初探 AI人工智能系列随笔:syntaxnet 初探(1)
- 【置顶】CoreCLR系列随笔
CoreCLR配置系列 在Windows上编译和调试CoreCLR GC探索系列 C++随笔:.NET CoreCLR之GC探索(1) C++随笔:.NET CoreCLR之GC探索(2) C++随笔 ...
- C++随笔:.NET CoreCLR之GC探索(4)
今天继续来 带大家讲解CoreCLR之GC,首先我们继续看这个GCSample,这篇文章是上一篇文章的继续,如果有不清楚的,还请翻到我写的上一篇随笔.下面我们继续: // Initialize fre ...
- C++随笔:从Hello World 探秘CoreCLR的内部(1)
紧接着上次的问题,上次的问题其实很简单,就是HelloWorld.exe运行失败,而本文的目的,就是成功调试HelloWorld这个控制台应用程序. 通过我的寻找,其实是一个名为TryRun的文件出了 ...
- ASP.NET MVC 系列随笔汇总[未完待续……]
ASP.NET MVC 系列随笔汇总[未完待续……] 为了方便大家浏览所以整理一下,有的系列篇幅中不是很全面以后会慢慢的补全的. 学前篇之: ASP.NET MVC学前篇之扩展方法.链式编程 ASP. ...
- 使用Beautiful Soup编写一个爬虫 系列随笔汇总
这几篇博文只是为了记录学习Beautiful Soup的过程,不仅方便自己以后查看,也许能帮到同样在学习这个技术的朋友.通过学习Beautiful Soup基础知识 完成了一个简单的爬虫服务:从all ...
- 利用Python进行数据分析 基础系列随笔汇总
一共 15 篇随笔,主要是为了记录数据分析过程中的一些小 demo,分享给其他需要的网友,更为了方便以后自己查看,15 篇随笔,每篇内容基本都是以一句说明加一段代码的方式, 保持简单小巧,看起来也清晰 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇
<高性能javascript> 领悟随笔之-------DOM编程篇一 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- css随笔1
1.简单清除浏览器样式 *{ padding: 0px; margin: 0px; } 2.得到屏幕范围的div html,body{ width: 1 ...
随机推荐
- Mac SVN版本从1.9降到1.8
假设系统已安装brew,在终端执行下列命令: brew update brew install subversion18 echo 'export PATH="/usr/local/opt/ ...
- Spark DataFrame vector 类型存储到Hive表
1. 软件版本 软件 版本 Spark 1.6.0 Hive 1.2.1 2. 场景描述 在使用Spark时,有时需要存储DataFrame数据到Hive表中,一般的存储方式如下: // 注册临时表 ...
- iOS 开发笔记-Storyboard
什么时候用Pust,什么时候用Modal? 一般情况下,是导航控制器点过去的,都使用Pust.如果是相对独立的,则用Modal,比如是导航上面的+添加之类. 关闭一个Modal -(IBAction) ...
- Catch all the latest Jordan Release Dates
In case y'all missed yesterday's news, Air Jordan 13 Olive 2018 officially unveiled their 2017 Holid ...
- HTML鼠标悬停改变样式
a.tt:hover {color: #FF0000;} <a class="tt" href="test.html">test</a> ...
- html5新元素练习(1)
1, <nav> 是专门由于菜单导航,链接导航的元素 2, <header> 主体页面的头部,与head不同,它的内容可以显示出来 3, <footer>页面 ...
- Python消息队列工具 Python-rq 中文教程
原创文章,作者:Damon付,如若转载,请注明出处:<Python消息队列工具 Python-rq 中文教程>http://www.tiangr.com/python-xiao-xi-du ...
- Linux命令: ls -l显示文件和目录的详细资料
ls -l 显示文件和目录的详细资料
- 向SVN添加新项目的实践笔记
假设已经安装好SVN服务器端和客户端 1.在SVN上新建文件夹: 2.进入工程项目所在文件夹,鼠标右键菜单选择[SVN Checkout...],弹出如下对话框 3.点击第2步对话框OK按钮,弹出如下 ...
- iframe嵌套
iframe基本内涵 通常我们使用iframe直接直接在页面嵌套iframe标签指定src就可以了. <iframe src="demo_iframe_sandbox.htm" ...