HTTP相关
HTTP协议与DNS服务、TCP协议及IP协议之间的关系
HTTP与HTTPS的区别
- HTTP的 URL 以
http://
开头,而HTTPS的 URL 以https://
开头 - HTTP是不安全的,而HTTPS是安全的
- HTTP的标准端口是80,而HTTPS的标准端口是443
- 在OSI网络模型中,HTTP工作于应用层,而HTTPS的安全传输机制工作于传输层
- HTTP无法加密,而HTTPS对传输的数据进行加密
- HTTP无需证书,而HTTPS需要CA机构颁发的SSL证书
什么是HTTP无状态协议?如何解决HTTP无状态协议?
HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。这是为了更快地处理大量事务,确保协议的可伸缩性。
通过引入Cookie技术,实现对请求和响应之间的通信状态的持久化处理。
URI和URL的区别
- URI(Uniform Resource Identifier)是统一资源标识符;URL(Uniform Resource Location)是统一资源定位符
- URI是由某个协议方案表示的资源的定位标识符,用字符串表示某一互联网资源,而URL表示资源的地点(互联网上所处的位置),可见URL是URI的子集
- 在Java的URI中,一个URI实例可以代表绝对的,也可以代表相对的,只要它符合URI的语法规则。而URL类不仅符合语义,还包含了定位该资源的信息,因此它不能是相对的。
- 在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析;而URL类可以打开一个到达资源的流。
- URI一般由以下几部分组成
- 登录信息(认证):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。
- 服务器地址:使用绝对URI必须指定待访问的服务器地址。地址可以是DNS可解析的域名、IPV4地址名、IPV6地址名。
- 服务器端口号:指定服务器连接的网络端口号。此项也是可选项,若用户省略则自动采用默认端口号。
- 带层次的文件路径:指定服务器上的文件路径来定位特指的资源。
- 查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项也是可选项。
- 片段标识符:可标记出已获取资源中的子资源(文档内的某个位置)。此项也是可选项。
常用的HTTP方法
HTTP方法 | 用途 |
---|---|
GET | 用来请求访问已被URI识别的资源 |
POST | 用来传输实体的主体 |
PUT | 传输文件 |
HEAD | 获得报文首部,不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等 |
DELETE | 按请求URI删除指定的资源,如文件等 |
OPTIONS | 用来查询针对请求URI指定的资源支持的方法 |
常见的HTTP状态码
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
200 | OK | 请求被正常处理 |
204 | No Content | 请求已成功处理,但在返回的响应报文中不包含实体的主体部分 |
204 | Partial Content | 客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容 |
301 | Moved Permanently | 永久性重定向 |
302 | Found | 临时性重定向 |
303 | See Other | 由于请求对应的资源存在着另一个URI,明确表示客户端应当采用GET方法定向获取请求的资源 |
304 | Not Modified | 服务器端资源未改变,可直接使用客户端未过期的缓存 |
307 | Temporary Redirect | 临时重定向,与302类似,但强制要求使用POST方法 |
400 | Bad Request | 请求报文中存在语法错误,导致服务器无法识别 |
401 | Unauthorized | 请求需要认证 |
403 | Forbidden | 对请求资源的访问被服务器拒绝 |
404 | Not Found | 服务器上无法找到请求的资源 |
500 | Internal Server Error | 服务器内部错误 |
503 | Service Unavailable | 服务器正忙 |
HTTP/1.1版本新特性
- 持久连接:所以连接默认都是持久连接,节省通信量。即只要任意一端没有明确提出断开连接,则保持TCP连接状态
- 管线化:支持同时并行发送多个请求,而不用一个接一个地等待响应了