面试题1:HTTPS的传输过程?3.HTTP响应格式1)客户端先从服务器那边获取到证书,证书里面包含了公钥A(证书里面的公钥A是服务器发送过去的);
2)客户端对证书进行检验(到第三方机构进行检验)
3)客户端生成一个对称密钥,使用公钥A对对称密钥进行加密,发送给服务器;
4)服务器收到这个请求之后,使用私钥B进行解密,得到对称密钥;
5)客户端发出的后续的请求,后续的请求都是通过这个对称密钥进行加密的,收到的数据也是通过这个对称密钥进行解密的;
面试题2:HTTP和HTTPS的区别?http是超文本传输协议,信息是明文传输, https则具安全性的ssl/tls加密传输协议。
1.Http和https使用完全不同的连接方法和不同的端口。前者是80,后者是443。Http连接是非常简单和无状态的;HttpS协议是由SSL/TLS+HTTP协议构建的网络协议,可用于加密传输和身份认证。它比HTTP协议更安全。
2.超文本传输协议,缩写为HTTP,是分布式、协作式和超媒体信息系统的应用层协议,是万维网数据通信的基础,也是互联网上使用最广泛的网络传输协议。HTTP最初被设计为提供一种发布和接收HTML页面的方式。
3.HTTPS协议之所以安全,是因为HTTPS协议对传输的数据进行加密,而加密过程是由非对称加密实现的。然而,HTTPS在内容传输的加密过程中使用对称加密,而非对称加密只在证书验证阶段发挥作用。
无状态:
无状态指的是对于请求方的每个请求,接收方都当这次请求是第一次请求。
因为对于请求方而言,每次请求时,接收方就像是失忆了一样,并不会依赖请求方以往的请求所生成的数据作回应。也就是说,就像是接收方没有保存请求方的状态(数据)一样,所以叫无状态。
面试题三:为什么要有HTTPS,他是为了解决什么问题的?1)引入对称加密,来加密数据业务;
2)引入非对称加密,来加密对称密钥;
3)引入证书,来向客户端证明当前的公钥是真实有效的;
面试题四:HTTP常见的header有哪些,都是干什么的? 面试题五:HTTP那些地方可以放自定义的数据?
一:状态码(面试的时候会让你说常见的状态码,背下来)
状态码表示访问一个网站的结果
1)200 OK这是最常见的一个状态码,表示访问成功
2)404 Not Found 表示没有找到资源,我们在浏览器中输入一个URL,目的是访问对方服务器的上面的一个资源,如果这个URL标识的资源不存在,那么就会出现404;
3)403 Forbidden 这是表示访问被拒绝,有的页面通常是用户具有一定的权限才可以进行访问,登录后才可以进行访问,如果用户没有直接登陆后就进行访问,容易出现403;
4)405 Method Not Allowed前面我们介绍了HTTP中所支持的方法,例如GET,POST等等,但是对方的服务器并不一定支持所有的方法,或者不允许用户使用一些其他的方法,
5)500 Internal Server Error 这是表示服务器内部出现错误,或这是服务器的代码中遇到了一些特殊情况(服务器会异常崩溃),这是就会产生这个状态码;
6)504 Gateway Timeout表示当服务器负载和比较大的时候,服务器处理单条请求的时间就会比较长,可能会出现超时的情况;这种情况一般是双十一的时候;
7)302 Move temporarily 这是表示临时重定向,类似于呼叫转移,别人呼叫旧的号码自动连接到新密码上;例如我原来的手机号是138-0000-9000,但是我现在换号了,换成了139-0000-9000,这是我需要办理一个呼叫转移业务,这样我的朋友们就不需要知道新号码,当他们拨打我的旧号码的时候,就会自动的转到新的手机号;
比如在刚才我没有登录我的账号,访问了我的一个私有项目,变成了403,这时我再进行登录,登陆成功后,就会自动的跳转到我的私有项目的那个页面;
这时在响应报文中的header中会包含一个Location字段,表示要跳转到那个页面;
8)301--Moved Permanently 表示永久重定向,当浏览器收到这种请求时,后续的请求都会改成新的地址,301也是通过Location字段来表示需要重定向的新地址;
对于重定向来说,他会发送两次请求,这个过程中的url会发生改变,第一次的请求的url,会变成第一次响应中的Location中的地址;
状态码小节:
1)1xx表示信息型状态码:接受的请求正在处理;
2)2xx表示成功状态码,表示请求正常,处理完毕;
3)3xx表示重定向状态码,需要进行附加操作才可以完成请求;
4)4xx表示客户端错误状态码,表示服务器无法处理请求;
5)5xx表示服务器处理错误状态码,服务器请求处理出错;
4.HTTP协议的构造形式1)直接在网络上输入一个URL
2)使用form表单,他可以构造GET和POST请求;
3)使用ajax,构造各种请求;
4)也可以通过java代码,基于其中的socket来构造出其中的HTTP请求,进行字符串拼接;
1)通过form表单创建HTTP请求;
input标签中的name属性,就构成了querystring中的key,input标签输入的内容,就成为了querystring中的value;在form中的method方法,可以控制请求的类型;
但是当给百度进行提交请求的时候,百度报错了;这是很正常的,因为百度没有支持像userld,classld这样的参数;必须客户端要和服务器相互配合;



