1、什么是HTTP协议
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个“中间层”,比如代理服务器、网关或者隧道(tunnel)。
2、HTTP请求方法
①GET
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。
②POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
③HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。
④PUT
向指定资源位置上传其最新内容。
⑤DELETE
请求服务器删除Request-URI所标识的资源。
⑥TRACE
回显服务器收到的请求,主要用于测试或诊断。
⑦OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
⑧CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
3、HTTP状态码
状态行:HTTP 版本号 + 响应状态码 + 状态说明
- 响应状态码有 1XX、2XX、3XX、4XX、5XX、5XX。
-
1XX 提示信息 - 表示请求已被成功接收,继续处理
-
2XX 成功 - 表示请求已被成功接收,理解,接受
-
3XX 重定向 - 要完成请求必须进行更进一步的处理
-
4XX 客户端错误 - 请求有语法错误或请求无法实现
-
5XX 服务器端错误 - 服务器未能实现合法的请求响应头
-
响应头:响应头与请求头对应,是服务器对该响应的一些附加说明
响应体:它才是真正的响应数据,这些数据其实就是网页的 HTML 源代码
4、HTTP无状态
HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。
5、HTTP无连接
限制每次连接只能处理一次请求
6、HTTP综合
7.时间戳
一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间
用来版本更新,解决浏览器缓存
8.基础防盗链
基础防盗链主要是针对客户端请求过程中所携带的一些关键信息来验证请求的合法性, 比如客户端请求IP,请求URL中携带的referer。优点是规则简单,配置和使用都很方便,缺点是防盗链所依赖的验证信息很多都是可以伪造的,因此此类防盗链可靠性较低。
Java代码手段防止非法请求,思路如下:
1.获取到当前请求的域名,如www.a.com
2.获取到请求资源的上一个地址
3.判断上一个地址是否为空,如果为空代表的是直接访问的资源,非法
还有一种情况就是B项目访问时上一个地址www.b.com/xxx 不是资源所在地址,非法
Referer在HTTP协议里有特殊的用途,当浏览器向服务器发送请求时,一般会带上
Referer头,告知服务器该请求是从哪个页面链接过来的。Referer经常被用于页面访问统计、图片防盗链等。
流媒体直播同样支持Referer防盗链,当请求发送到CDN服务器后,CDN服务器检查客户URL中所携带的Referer字段的信息,禁止或者允许符合特定规则(支持正则匹配)的
防盗链