趣谈HTTP

文章目录

  • 一.HTTP的详解
    • 1.HTTP简介
    • 2.HTTP的请求
    • 3.GET方法的使用
    • 4.POST方法的使用
    • 5.HTTP响应内容
    • 6.URL简介
    • 7.HTTP版本
    • 8.面试题:http1.0和http1.1的区别
  • 二.菜鸟的修炼
  • 三.现实中的HTTP
  • 四.Java中的HTTP
    • 1. HttpURLConnection
    • 2.创建一个get请求
    • 3.创建一个post请求
    • 4. 添加请求参数
    • 5. 添加请求头
    • 6. 配置超时时间
    • 7. 处理Cookies
    • 8. 处理重定向
  • 五.HTTP的游戏人生
    • 1.网站与HTTP
    • 2.游戏与HTTP
    • 3.网络安全与HTTP
  • 六.HTTPS的原理解剖(图文讲解)
  • 七.灵魂三提问

一.HTTP的详解

1.HTTP简介

趣谈HTTP_第1张图片
  HTTP简称超文本传输协议,它架构在TCP(传输控制协议)之上,适用于谷歌浏览器,在应用层工作,基于C(浏览器)/S(服务器)进行通信,所有的WWW文件都必须遵守这个标准(HTTP)。
  HTTPS是HTTP的安全版本,通过SSL来加密保障传输通道。

2.HTTP的请求

  HTTP请求由请求行、请求头、空行、请求体组成。
  常见的请求方式有GET、POST。

3.GET方法的使用

  当我们在服务器上读取文档的时候,点击某个连接或浏览网页,使用的请求都是GET。

4.POST方法的使用

  POST将请求的参数封装在HTTP之中,以名称的方式出现,可以传输大量数据。当我们使用表单的时候,会用到POST。

5.HTTP响应内容

  HTTP响应内容由响应行、响应头、空行、响应体组成。

6.URL简介

  URL(Uniform Resource Locator,统一资源定位符),是WWW的统一资源定位标志,就是指网络地址。

7.HTTP版本

  HTTP 0.9:GET
  HTTP 1.0:GET、POST 、HADE
  HTTP 1.1:GET、 POST 、HADE PUT、PATCH、OPTIONS、DELETE
  HTTP 1.1:GET、 POST 、HADE PUT、PATCH、OPTIONS、DELETE
  HTTP 2.0:升级版

8.面试题:http1.0和http1.1的区别

1.连接
   在HTTP1.1中默认开启Connection: keep-alive,弥补了HTTP1.0每次请求都要创建连接的缺点。
2.缓存处理
  在HTTP1.0中主要使用header里的内容来作为缓存判断的标准,而HTTP1.1引入了更多的缓存控制策略。
3.带宽优化和网络连接的使用
  HTTP1.0中,存在一些浪费带宽的现象,例如:客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点继续传送功能,HTTP1.1只允许请求资源的某个部分,即返回码是206(Partial Content),有利于开发者的选择,能充分利用带宽优化和网络连接。
4.错误通知的管理
  在HTTP1.1中新增24个状态响应码,如
409表示请求的资源与资源当前状态冲突;410表示服务器上的某个资源被永久性的删除。而HTTP1.0没有增加错误管理。
5.Host头域处理
  在HTTP1.0中,每台服务器都绑定着一个唯一的IP地址,因此请求消息中的URL并没有传递主机名,所以不支持Host头域。而HTTP1.1的请求消息和响应消息都可以支持Host头域,并且在请求消息中,如果没有Host头域,就会报告一个错误(400 Bad Request)。

二.菜鸟的修炼

参考教程:https://www.runoob.com/http/http-tutorial.html
  这个阶段的我是一个初学者,渴望学到更多的知识。我按照上面的参考教程,一步一步地实践下来,感觉对HTTP有了深刻的了解。
  到了一定的时间之后,它就是我所获的一份有用的知识。
  HTTP中的请求方式挺重要的,消化之后,用处会很大。至少post和get肯定是要掌握的,其他的请求方法会在它们的基础上演变。

三.现实中的HTTP

  在生活当中,HTTP可能就是一串字母,它也可以出现在任何角落。
  标题突出的是现实,那我就来谈谈自己学习HTTP的经历。在我刚接触计算机的时候,心中就有无法满足的好奇心。当我在电脑上浏览东西的时候,第一张出现的页面是百度。
  当我好奇地点击了baidu.com,就变成了这个网址(https://www.baidu.com)。在这个时候,我就去了解了https。原来https是由HTTP 、 SSL / TLS两部分组成。只能说https是经过加密的,所以才可以作为网址的开头,能更好地保护网站的安全。

四.Java中的HTTP

参考网址1:https://blog.csdn.net/weixin_43670802/article/details/102865855
参考网址2:
https://www.cnblogs.com/caoshenglu/p/8476593.html

1. HttpURLConnection

  HttpUrlConnection类是一个内置类,能实现一些基本的HTTP的请求。

2.创建一个get请求

URL url = new URL("www.baidu.com"); 
HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
con.setRequestMethod("GET");

3.创建一个post请求

// 1. 获取访问地址URL
URL url = new URL("http://localhost:8080/Servlet/do_login.do");
// 2. 创建HttpURLConnection对象
httpURLConnection = (HttpURLConnection) url.openConnection();
/* 3. 设置请求参数等 */
// 请求方式  默认 GET
httpURLConnection.setRequestMethod("POST");

4. 添加请求参数

Map<String, String> parameters = new HashMap<>();
parameters.put("param1", "val");
con.setDoOutput(true);
DataOutputStream out = new DataOutputStream(con.getOutputStream());
out.writeBytes(ParameterStringBuilder.getParamsString(parameters));
out.flush();
out.close();

5. 添加请求头

通过setRequestProperty() 方法可以添加请求头:

con.setRequestProperty("Content-Type", "application/json");

通过getHeaderField()方法可以读取响应头:

String contentType = con.getHeaderField("Content-Type");

6. 配置超时时间

con.setConnectTimeout(2000);
con.setReadTimeout(2000);

7. 处理Cookies

String cookiesHeader = con.getHeaderField("Set-Cookie"); 
List<HttpCookie> cookies = HttpCookie.parse(cookiesHeader);

8. 处理重定向

   我们可以通过调用方法setInstanceFollowRedirects(),设置为true或者false,来控制是否允许一个特定连接自动跟随重定向:

 con.setInstanceFollowRedirects(true);

  可以全局设置所有的连接是否允许自动跟随重定向:

 HttpUrlConnection.setFollowRedirects(false);

五.HTTP的游戏人生

HTTP的出现让我们想到了网站、游戏、网络安全等。

1.网站与HTTP

  它们的优点让思维创新有了很大的提升,假设它是一串字母,即可以隐藏密码,又可以表达某种意思。首先,网站里就有网页三剑客,虽然三剑客指的是三种技术,但是我也可以把它们想象成人的三种风格。这些风格可以让HTTP变成其他字母,从而隐藏最关键的信息。所以,它们达成了安全协议,让HTTP得到了很好的升级。

2.游戏与HTTP

  在游戏世界里,会经常出现bug。但是这些bug的出现,就引出了HTTP。当游戏版本太低的时候,就会有漏洞的袭击,紧接着bug也纷纷赶来。说到bug,当电脑配置太低的时候,HTTP就会不支持。因此,我就会相对稳定的版本来稳住bug。

3.网络安全与HTTP

  在网络世界中,最常见的就是协议。网络中的DDos攻击就是借助HTTP的力量来完成实验,渗透也是一样的。HTTPS是加过密的,但是在网络安全的世界里,又存在解密算法。

六.HTTPS的原理解剖(图文讲解)

参考网址
https://blog.leapmie.com/archives/418/

  可以关注微信公众号Java团长
  这篇博客层层深入,从原理上,把 HTTPS 的安全性讲得很透。

七.灵魂三提问

1.为什么用了 HTTPS 就是安全的?
2.HTTPS 的底层原理如何实现?
3.用了 HTTPS 就一定安全吗?

你可能感兴趣的:(Java)