http 介绍http 的请求部分http 请求的基本结构请求行详解 http 请求消息头http 响应详解http 响应的基本结构状态行http 响应消息头详解expires、pragma、cache-control 设置不缓存expires、pragma、cache-control 设置 指定缓存时间http 请求的细节————通用信息头
http 介绍http 协议是建立在 tcp/ip 协议基础上
http 协议全称 超文本传输协议 (http,hypertext transfer protocol )
http 协议 版本 1.0 1.1 2.0
http 1.0 成为短连接,http 1.1 称为长连接
所谓长和短是指 持续时间 长连接 1.1 30s 短连接发送完数据立刻断开
http定义了与服务器交互的不同方法,最基本的方法有4种,分别是 get,post,put,delete。 url全称是资源描述符,我们可以这样认为:一个u rl地址,它用于描述一个网络上的资源,而http中的g et,post,put,delete就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,get一般用于获取/查询资源信息,而post一般用于更新资源信息。
http 的请求部分http 请求的基本结构 请求行
消息头
一个空行
内容
请求行 请求方式有:post、get、options、delete、trace、put
常用的有:post、get
post 与 get区别:
get使用url或cookie传参。而post将数据放在body中。
get的url会有长度上的限制,则post的数据则可以非常大。
post比get安全,因为数据在地址栏上不可见。
详解 http 请求消息头accept :告诉服务器我可以接受的 文件类型 浏览器可接受的mime类型
accept-charset:浏览器可接受的字符集编码
accept-encoding:可以接受 以某种 格式 压缩后的数据 例如:gzip 、compress。浏览器能够进行解码的数据编码方式
accept-langage:浏览器支持的语言
host:表示我所要找的 主机 是谁
if-wodified-since: 告诉服务器 本机的 缓存中 是否有所要请求的文件 包含这个请求文件的时间 // 服务器受收到这个请求 将时间进行比较 从而判断浏览器所要请求的文件是否发生改变,要是发生改变 将发送一份新的文件给浏览器。没有改变就不会再次发送数据。//注:只有当所请求的内容在指定的日期之后又经过修改才返回它,否则返回304not modified应答。
referer:告诉服务器 ,我来自哪里。 该消息头,常用于防止 盗链。关于如何防止盗链的个人理解:
盗链:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
referer 的值 是你点击连接文件的位置。referer.startwith(内部路径);
public void doget(httpservletrequest request,httpservletresponse response) throws servletexception, ioexception{ // 防止乱码 response.setcontenttype("text/html;charset=utf-8"); // 获取输出流 printwriter out = response.getwriter(); // 获取用户浏览器 referer string referer = request.getheader("referer"); if(referer == null || referer.startswith("http://localhost:8080/本地内部用户web应用路径")){ response.sendredirect("其他非真正资源网页"); return; }else{ } // 内部资源文件 。。。。。。。。。。。 }
user-agent:告诉服务器,浏览器内核。
cookie: 这是最重要的请求头信息之一
connection:表示是否需要持久连接。如果servlet看到这里的值为"keep-alive",或者看到请求使用的是http 1.1 (http 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如applet,图片),显著地减少下载所需要的时间。要实现这一点,servlet需要在应答中发送一个content-length头,最简单的实现方法是:先把内容写入 bytearrayoutputstream,然后在正式写出内容之前计算它的大小。
date:浏览器发送该 http 请求的时间。
content-length:表示请求消息正文的长度。
ua-pixels,ua-color,ua-os,ua-cpu:由某些版本的ie浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和cpu类型。
http 响应详解http 响应的基本结构 状态行
多个消息头
一个空行
实体内容
状态行 格式: http版本号 状态码 原因叙述<crlf>
举例:http/1.1 200 ok
状态码用于表示服务器对请求的处理结果,它是一个三维的十进制数。响应状态码分为5类。
状态码含义
100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200~299 表示成功接收请求并已完成整个处理过程 。 常用200
300~399 为完成请求,客户端需进一步细化请求,例如:请求的资源已经移动一个新地址,常用302、307
400~499 客户端的请求有错误。常用 404
500~599 服务器端出现错误, 常用 500
http 响应消息头详解location:让浏览器重新定位到 指定的 url
server:告诉浏览器 服务器的类型
content-encoding:服务端能够发送压缩编码类型
content-length: 服务器端发送的压缩数据的长度
content-langage:服务端发送的语言类型
content-type:服务端发送的类型及采用的编码方式
last-modified:服务端对该资源最后的修改(更新)时间
refresh:服务端要求浏览器在指定的时间,刷新,然后访问指定的页面路径
content-disposition:attachmen;filename=aaa.zip 服务端要求客户端一下载文件的方式打开该文件,即告诉浏览器有文件需要下载
transfer-encoding:传送数据到客户端的方式
set-cookie:服务端发送到客户端的暂存数据
cache-control:告诉浏览器如何缓存页面数据
expires:告诉浏览器如何缓存页面数据 参数 -1 不缓存
pragma:告诉浏览器如何缓存页面数据
connection:维护客户端和服务端的连接关系 是否保持连接
date:服务端响应客户端的时间
expires、pragma、cache-control 设置不缓存// 指定该页面不缓存 ie浏览器内核response.setdateheader("expires",-1);// 兼容设置response.setheader("cache-control","no-cache");response.setheader("pragma","no-cache");
expires、pragma、cache-control 设置 指定缓存时间// 指定该页面缓存指定时间 ie浏览器内核response.setdateheader("expires",system.currenttimemillis()*3600*1000*24;
http 请求的细节————通用信息头 通用信息头指既能用于请求,又能用于响应的一些消息头
cache-control:no-cache
pragma:no-cache
connection:close/keep-alive
date:tue,。。。
以上就是http协议深度解析 的详细内容。
