7.10面经笔记

111 阅读4分钟
  • 幂等性
HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。
幂等不仅仅只是一次(或多次)请求对资源没有副作用(比如查询数据库操作,没有增删改,因此没有对数据库有任何影响)。

幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。

幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果。

网络超时等问题,不是幂等的讨论范围。
  • 常见的http方法有哪些?get和post的区别?
安全:请求方法不会影响服务器上的资源
幂等:多次执行相同操作,结果相同
显示声明缓存:响应头包含Expires Cache-Control:max-age等时缓存
get:请求资源 请求不含主体,响应含主体,支持表单,安全,幂等且可缓存
head:请求资源头部,请求不含主体,响应也不含主体,不支持表单,安全,幂等,可缓存
post:发送数据,主体类型由content-type指定,请求含主体,响应含主体,支持表单,不安全,不幂等,显示声明缓存
put:发送负载创建或替换目标资源,请求含主体,响应不含主体,不支持表单,不安全,幂等,不可缓存
delete:删除资源 请求含主体不限,响应含主体也不限,不支持表单,不安全,但幂等,不可缓存
connect:创建点到点沟通隧道,请求不含主体,响应含主体,不支持表单,不安全,不幂等,不可缓存
options:检测服务端支持方法 不支持表单,安全幂等,不可缓存
trace:消息环回测试,多用于路由检测
patch:部分修改资源

  • 常见http请求头和响应头有哪些
accept
accept-encoding
accept-language
cache-control
cookie
connection
host
vary
user-agent
upgrade-insecure-requests
if-none-match
if-modified-since
if-match
响应头:
etag
expires
date
content-type

  • https是基于安全套接字协议ssl,提供传输加密和身份认证保证传输的安全性,通过证书确认网站的真实性 http2.0和http3.0都只用于https://网址
https三次握手:
1.client hello
2.server hello
3.certificate
4.server hello done
5.client key exchange
6.change cipher spec
7.finished
8.change cipher spec
9.finished
https默认端口443 传输加密,不易劫持,
ca认证就是ssl证书

  • ajax
ajax就是异步的js和xml,他不是新技术只是老技术js采用新用法(引用了xmlhttprequest对象)
同步请求:
是指当浏览器发出请求后只有当服务端完成后响应回来,才能看到响应结果,这个过程中浏览器不能做其他事情,只能等待服务端的响应
异步请求时指当浏览器发出请求后,等待服务端的响应,在此期间浏览器不阻塞 你可以去做其他的事情直到服务端的响应结束,通知你回来。
所以我们看到的同步请求就是整个浏览器页面都会刷新一次
而异步请求时局部刷新,他不会整体刷新页面
本质来说异步请求就由浏览器开启一个新线程去发送请求到服务端,而主线程该干嘛就干嘛,不受影响直到这个异步线程从服务端响应回来,然后主线程就要针对这个回来的响应进行处理
ajax的对象
xmlhttprequest对象,专门用来发送异步请求的对象,当然也可以发送同步请求。
代码的编写步骤:
1.创建xmlhttprequest对象
var xmlhttp;
function ajax_demo(){
    if(window.XMLHttpRequest){
       xmlhttp=new XMLHttpRequest();
    }else{
       xmlhtt =new   ActiveXObject('Microsoft.XMLHttp');
      }
     
 }
 
2.注册回调函数,必须忒通知我才行
xmlhttp.onreadystatechange=function(){
//..
if(xmlhttp.redaState==4){
   if(xmlhttp.status==400){
   }
   }

}
3.建立与服务端的连接 这个是短连接
xmlhttp.open('POST|GET','目标url',true);
    true表示异步 false表示同步
4.发送请求
xmlhttp.send();
如果要传递数据给服务器把数据作为参数传过去

1.readyState属性
0请求未初始化
1服务器连接已经建立
2请求已接收
3请求处理中
4请求已完成,响应已就绪
status属性也就是响应的状态码
1xx
2xx
3xx
4xx
5xx服务端错误