老李分享:HTTP协议之请求和响应

 
HTTP请求头详解:

GET http://www.foo.com/ HTTP/1.1

GET是请求方式,请求方式有GET/POST
http://www.foo.com/是请求的服务器地址
HTTP/1.1表示HTTP协议的版本,一般有1.1 , 1.0 ,0.9版本
Host: www.foo.com

请求主机的名称HostName

Connection: keep-alive 

Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时Keep-Alive功能避免了建立或者重新建立连接

Cache-Control: max-age=0 

Cache-Control属性为控制页面缓存,常见的值有常见取值有private、no-cache、max-age、must- revalidate等,默认为private;max-age设定网页缓存时间;

User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.3 Safari/535.19 
 

用来表明身份,从这里可以看到操作系统、浏览器以及浏览器内核和对应版本号的具体信息

 

当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器请求是从哪个页面链接过来的,服务器籍此可以获得一些信息用于处理。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
告诉服务器当前客户端可以接收的文档的类型。其实这里包含了*/*,就表示什么都可以接收;
Accept-Encoding: gzip,deflate,sdch 
Accept-Encoding表示浏览器有能力解码的编码类型;
Accept-Language: zh-CN,zh;q=0.8 
Accept-Language表示浏览器所支持的语言类型;

zh-cn表示简体中文;zh 表示中文;

q是权重系数,范围 0 =< q <= 1,q 值越大,请求越倾向于获得其“;”之前的类型表示的内容,若没有指定 q 值,则默认为1,若被赋值为0,则用于提醒服务器哪些是浏览器不接受的内容类型。

Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

浏览器支持的字符编码分别是 GB2312、utf-8 和任意字符,优先顺序是 GB2312、utf-8、*。
Cookie: SESSIONID=58AB420B1D8B800526ACCCAA83A827A3:FG=1 
通过Cookies进行会话跟踪,第一次响应的时候设置的Cookies在随后的每次请求中都会发送出去,Cookies还可以包括登录认证后的身份信息。
 
Chache-Control的详解:
其作用根据不同的重新浏览方式分为以下几种情况: 
(1) 打开新窗口如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器。 
(2) 在地址栏回车如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。 
(3) 按后退按扭如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问。 
(4) 按刷新按扭无论为何值,都会重复访问 当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT 在ASP中,可以通过Response对象的Expires、ExpiresAbsolute属性控制Expires值;通过Response对象的CacheControl属性控制Cache-control的值,例如: Response.ExpiresAbsolute = #2000-1-1# ' 指定绝对的过期时间,这个时间用的是服务器当地时间,会被自动转换为GMT时间 Response.Expires = 20 ' 指定相对的过期时间,以分钟为单位,表示从当前时间起过多少分钟过期。 Response.CacheControl = "no-cache" Expires值是可以通过在Internet临时文件夹中查看临时文件的属性看到的。
 
HTTP响应头详解:
HTTP/1.1 200 OK
响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释
 Date: Sun, 04 Mar 2012 22:48:31 GMT 
 响应的时间
Server: Apache/2.2.8 (Win32) PHP/5.2.6 
表示服务端的一些信息:Web 容器、操作系统、服务端语言及对应的版本。
Set-Cookie: PTOKEN=; expires=Mon, 01 Jan 1970 00:00:00 GMT; path=/; domain=.foo.com; HttpOnly 
Set-Cookie: USERID=c7888882e039b32fd7b4d3; expires=Tue, 01 Jan 2030 00:00:00 GMT; path=/; domain=.foo.com 
响应给客户端的Cookie;
每个 Set-Cookie 都设置一个 Cookie(key=value 这样),随后是如下内容。
expires:过期时间,如果过期时间是过去,那就表明这个 Cookie 要被删。
path:相对路径,只有这个路径下的资源可以访问这个 Cookie。
domain:域名,有权限设置为更高一级的域名。
HttpOnly:标志(默认无,如果有的话,表明 Cookie 存在于 HTTP 层面,不能被客户
端脚本读取)。
Secure:标志(默认无,如果有的话,表明 Cookie 仅通过 HTTPS 协议进行安全传输)。 
X-Powered-By: PHP/5.2.6 
Content-Length: 3635 K
响应体的长度。
eep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html;charset=gbk  
响应资源的类型与字符集。针对不同的资源类型会有不同的解析方式,这个会影响浏
览器对响应体里的资源解析方式,可能因此带来安全问题。字符集也会影响浏览器的解码
方式,同样可能带来安全问题
<html> ... </html>

老李分享:HTTP协议之请求和响应的更多相关文章

  1. 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析

    [渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...

  2. 02_Django-路由配置-HTTP协议的请求和响应

    02_Django-路由配置-HTTP协议的请求和响应 视频:https://www.bilibili.com/video/BV1vK4y1o7jH 博客:https://blog.csdn.net/ ...

  3. HTTP协议的请求和响应学习

    本篇作为学习servlet的前提,http协议是学习JavaWeb开发的基石,不深入了解http协议,就不能说掌握了JavaWeb开发. HTTP协议有两个版本:HTTP1.0和HTTP1.1,那么有 ...

  4. 【HTTP】HTTP协议的请求与响应

    创建时间:6.14 http协议 的位置 1.HTTP是什么 超文本传输协议(HyperText Transfer Protocol) 2.Http协议的组成 Http协议由Http请求和Http响应 ...

  5. #WEB安全基础 : HTTP协议 | 0x10 请求和响应报文重点结构及常见头部

    你需要认识一些常见的头部以及了解报文的详细结构 请求报文的请求行 GET/HTTP/1.1 响应报文的响应行 HTTP/1.1 200 OK 想必这些大家都知道了 请求 我访问一个页面 Host // ...

  6. HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端

    协议简介 协议,自然语言里面就是契约,也是双方或者多方经过协商达成的一致意见; 契约也即类似于合同,自然有甲方123...,乙方123...,哪些能做,哪些不能做; 通信协议,也即是双方通过网络通信必 ...

  7. 老李分享:https协议

    老李分享:https协议   最近我们看到很多站点使用 HTTPS 协议提供网页服务.通常情况下我们都是在一些包含机密信息的站点像银行看到 HTTPS 协议. 如果你访问 google,查看一下地址栏 ...

  8. 老李分享:HTTP协议之协议头

    老李分享:HTTP协议之协议头   当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器.你明白HTTP请求头的具体含 ...

  9. http协议(二)请求和响应报文的构成

    http协议用于客户端和服务器之间的通信,请求访问资源的一方称为客户端,而提供资源响应的一方称为服务器端. 下面就是客户端和服务端之间简单的通信过程 PS:请求必须从客户端建立通信,服务端没收到请求之 ...

随机推荐

  1. 关于OpenGL和DX学习的取舍

    大家多知道左右就肯定要与显卡打交道.两大图形图像IPA.OpenGL(图形),DX(图形,声音,键盘控制,网络) OpenGL的兴起可能取决于苹果公司的适用,吸引看大部分开发者适用,它有跨平台的有点. ...

  2. VS2015在Windows 10 下面安装经验

    实体机环境:Windows 10 专业版(2017年2月28日 官方下载版本) VS2015:cn_visual_studio_enterprise_2015_with_update_3_x86_x6 ...

  3. ABP学习笔记

      1. 用 Nhibernate:CountAsync 是定义在System.Data.Entity里的 var totalCount = await query.CountAsync(); 出现以 ...

  4. 同一环境下新建Standby RAC库

    需求:在同一个环境下新建Standby RAC库,即和Primary RAC在相同的磁盘组. 说明:生产环境一般不建议这样配置DG,因为存储层面是相同磁盘组,灾备的实际意义不大.我这里是用作读写分离. ...

  5. HTML重要标签及属性详解

    我学习前端的时间不长,短短1个月而已,只学了些HTML5和CSS3还有少许javascript,另外还有网页布局等等辅助性书籍,我在模仿网页以及完成百度前端技术学院的任务过程中发现了我容易忘记的标签以 ...

  6. Spring+SpringMVC+MyBatis+easyUI整合基础篇(六)maven整合SSM

    写在前面的话   承接前文<Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven>,本篇所讲述的是如何使用maven与原ssm项目整合,使得一个普 ...

  7. golang中的reflect包用法

    最近在写一个自动生成api文档的功能,用到了reflect包来给结构体赋值,给空数组新增一个元素,这样只要定义一个input结构体和一个output的结构体,并填写一些相关tag信息,就能使用程序来生 ...

  8. Java 注解 入门

    这几天在学习Spring3.x,发觉现在许多框架都用上了java注解功能,然后自己就对java注解这方面初步学习了一下. 首先,注解跟注释不是一个意思,也根本不是同一个事物. 注释就是我们平常平常中对 ...

  9. .NET Core 1.1日期解析无APi、SQL Server数据转换JSON

    前言 在批量导入Excel中的数据时发现出生日期为整数也就是为天数,结果倒腾了翻,这是其一,其二是数据库中的某一列存的是JSON数据,但是场景是为了作为作业来运行,此时不得不将筛选出的数据手动拼接成J ...

  10. HDFS Namenode启动过程

    文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6564032.html  转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...