客户端和服务端通信

AJAX 和 XMLHttpRequest

XMLHttpRequest(xhr)是一个javascript的类。
将HTTP请求从Web 浏览器异步传输到Web 服务器的方法。
xhr的api

new XMLHttpRequest();
xhr.open
xhr.send
xhr.onreadystatechange
xhr.status
xhr.readyState
xhr.responseText

    // 获取xhr对象
    const xhr = new XMLHttpRequest();
    // 建立连接,
    xhr.open("GET", "http://www.baidu.com"); // post
    // 发送请求
    xhr.send();
    // 获取数据
    xhr.onreadystatechange = ()=>{
      if(xhr.readyState==4 && xhr.status==200){
        console.log(xhr.responseText);
      }
    }

AJAX可以看作是对xhr对一层封装,直接调用$.get,$.post,$.ajax就能完成上面的请求

TCP UDP IP HTTP

IP是网络层协议
TCP、UDP是传输层协议,主要解决如何在网络中传输

TCP
面向连接、传输可靠(保证数据正确性)、有序(保证数据顺序)、传输大量数据(流模式)、速度慢、对系统资源的要求多,程序结构较复杂,每一条TCP连接只能是点到点的,TCP首部开销20字节。

UDP
面向非连接 、传输不可靠(可能丢包)、无序、传输少量数据(数据报模式)、速度快,对系统资源的要求少,程序结构较简单 ,UDP支持一对一,一对多,多对一和多对多的交互通信,UDP的首部开销小,只有8个字节。

HTTP是应用层的协议,是基于TCP连接的,主要解决如何包装数据

HTTP说短链接,是客户端向服务器发送一次请求后,服务器返回数据后便会断开链接。而且只能说客户端向服务器请求,他们之间不能通信。并且一个request对应一个response。在http1.1中加入了一个connect:keep-alive。可以合并多个http请求,不会再断开,但是还是有http固定的属性就是一个request对应一个response。并且所有的response都是被动的,不能主动发给客户端。
http支持的方法:get post delete put(更新)

socket, webSocket

socket是套接字,是UDP、TCP的api,它不是协议。
socket是长连接,可以维持很久。服务器和浏览器之间可以互相通信

在这里插入图片描述
webSocket,是一种在单个 TCP 连接上进行全双工通信的协议,websocket握手协议有两个属性:connect:upgrade。upgrade:websocket。一般情况下我们使用 HTTP 有一个很大的缺陷,就是 HTTP 只能由客户端来主动发起,如果有需要服务端主动通知的业务,就需要轮训。轮询的效率低,非常浪费资源。为了解决 Web 端即时通讯的需求就出现了 WebSocket。

轮询指的是,客户端定时的给服务器发送请求,询问数据是否发生变化。轮询的效率低,非常浪费资源,因为要不停的连接或者http始终保持连接状态

响应头:
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

  1. websocket对象
var ws = new webSocket(请求地址)
请求地址:ws://ip地址:端口号/资源名称
  1. websocket事件
open: websocket对象.onopen 连接建立时触发
message:websocket对象.onmessage 客户端接收服务端数据时触发
error: websocket对象.onerror 通讯发生错误时触发
close: websocket对象.onclose 连接关闭时触发
  1. websocket方法
    websocket发送数据时候用send()

怎么抓取https加密后的内容

可以使用charles。charles可以通过伪造ca证书来冒充一个服务器。

客户端发送请求时候像这个charles发送请求 ,然后charles根据客户端的请求然后向真实的服务器发送请求,真实的服务器就会返回数据给charles 这样charles就拿到了真实的数据了。

http和https的区别

http是超文本传输协议,数据传输的时候是明文传输,端口是80
https是在http+ssl协议构建的安全传输协议 端口是443

http的缓存机制

强缓存和协商缓存
如果是强缓存,浏览器就不会像服务器发送请求,直接从缓存中读取数据,并返回status code 200

强缓存:
expires 过期时间,如果在未过期的时间内就会直接读取缓存中的数据,不在请求
cache-control: max-age 用来设置资源可以被缓存多长时间,单位是秒 
(http1.1时候  expires 会被cache-control给覆盖)

如果是协商缓存,服务器就会根据这次的请求的请求头中的数据来判断是否命中协商缓存,如果命中了就会返回304 并带上新的响应头通知浏览器从缓存中读取资源。

协商缓存
Last-Modifed/If-Modified-Since和Etag/If-None-Match
Etag/If-None-Match:etag是资源的唯一标志,由服务器生成反馈给前端的。 当资源过期时候【浏览器会判断cache-control表示的max-age是否过期或者expires】,浏览器会向服务器发起请求带上请求头if-none-match ,对应的值是etag的值,服务器收到这个请求就会进行对比并且返回200或者304

Last-Modifed/If-Modified-Since:
Last-Modified:
资源最后的修改时间

If-Modified-Since:
当资源过期的时候,向服务器发送请求并带上if-modified-since ,服务器会根据请求的时间和资源最后修改的时间,然后判断是否要返回数据或者是直接使用缓存中的数据 状态码是304或者200

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值