js-21http协议

简介: js-21http协议

js-21http协议


01. http协议:

1.协议

 => 超文本传输协议      
 => 基于请求响应模式的,无状态,无连接的应用层协议,一般应运于web程序中.       
 => 白话: 制定客户端(前端)与服务器(后端)通讯的规则
 1.请求响应模式          
​     客户端   -请求->        服务器                   
​         <-响应-        
 2. 无状态         
     http协议不会保存状态数据,需要自己写代码保存                
 3. 无连接           
  每次请求响应完成,连接自动断开 

http是超文本传输协议,信息是明文传输,

https 则是具有安全性的ssl加密传输协议

http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全


2.http之url

url: 统一资源定位符
           => 作用: 定位网络中资源 
           => 格式: http://ip:port/path/res
                    http
                    ip: ip地址  
                          网络中唯一标识一台计算机
                          10.7.178.117
                    port: 端口号
                          区分电脑中不同应用程序
                    path: 路径
                    res:资源
            => 如: http://10.7.178.117:3000/productlist 


3.http工作原理

工作原理:
            1. 建立连接, 客户端与服务端建立连接
            2. 发送请求, 客户端向服务端发起一个请求
            3. 响应数据, 服务端接收到客户端请求之后,响应相应数据给客户端
            4. 断开连接, 
        1. 客户端与服务端建立连接
             三次握手协议
                =>客户端与服务端之间建立稳定可靠的连接
        2. 发送请求, 客户端向服务端发起一个请求
             请求是一串有格式的文本信息 - 请求包
             三部分: 请求行, 请求头部, 请求正文
            -请求行
                请求方法method  请求地址url  协议版本
                  get   客户端获取服务端数据
                  post  提交数据到服务端
                  put   修改数据
                  delete  删除
                  ...
             -请求头部
                 格式: 名称:值
                 host:10.7.178.117   //主机
                 content-type : text/html  //数据类型   
                 ...
             -请求正文
                 username='admin'&password=123
                注:只有post请求时,内容参数放请求正文里
                  如果是get请求,内容参数放url地址后面
                   http://10.7.178.117:3000/login?username='admin'&password=123
        3. 响应数据
             有格式的文本信息 - 响应包
               响应包: 状态行, 响应头部, 响应正文
               状态行: 协议 状态码 状态码描述
                            200    ok   
                            4xx    客户端出错  
                            404    请求url地址出错
                            5xx    服务端出错
                            500     服务端程序出错
                            401    用户认证
                            403    服务器拒绝
                            304    未修改
                响应头部: 名称:值
                          content-type: text/html
                响应正文
        4. 断开连接
             四次握手


4.抓包调试工具

查看后端发起的请求

1.chrome
右键 - 检查 - network - ( 请求行)general  |  (相应内容)response
2.postman工具 - chrome插件 
url - 输入 chrome//apps - skip - 输入你想请求的数据


05.ajax异步网络通信技术

ajax异步网络通讯技术
           现在允许浏览器与服务器通信而无须刷新当前页面的技术. 
           不需要刷新整个页面,只刷新局部页面的一种异步通讯技术;
ajax核心对象 XMLHttpRequest
            XMLHttpRequest
               => new window.XMLHttpRequest()
建立客户端与服务端连接
           open(method,url,true|false)
           open(method,url)
      open()
              =>建立客户端与服务端连接
           open('post','http://10.7.178.117:3000/productlist')   
           open('get','http://10.7.178.117:3000/productlist?username:admin&password=123')   
发送请求
           send()
              =>发送请求
              =>post参数放send方法作参数发送  send('username:admin&password=123')
              =>get send() 
处理响应数据
           onreadystatechange=function(){
               //1.就绪码: readyState  判断当前响应进度
                 readystate == 4    表示响应完成
               //2. 状态码: status  , statusText 状态描述
               // 3. 响应内容: responseText 
           }


练习ajax

1练习异步:
  const btn = document.querySelector('.btn')
  const pEle = document.querySelector('p')
        btn.addEventListener('click', function () {
            //连接后端服务器,获取后端数据
            //1.创建XMLHttpRequest对象 
            let xhr = new window.XMLHttpRequest()
            //2.建立连接
            xhr.open('get', 'http://10.7.178.117:3000/productlist')
            //3.发送请求
            xhr.send()
            //4.处理响应
            xhr.onreadystatechange = function () {
                //就绪码 
                if (xhr.readyState == 4) {
                    //状态码
                    if (xhr.status == 200) {
                        let data = xhr.responseText
                        //得到的数据是字符串 转换成对象输出
                        let productList = JSON.parse(data)
                        //动态渲染
                        loadProductList(productList) //传参进去
                    }
                }
            }
        })
解决跨域问题:
//解决跨域问题 == 解决乱码问题
    response.setHeader('Access-Control-Allow-Origin','*')
2练习异步动态渲染:
//动态渲染商品列表数据
        function loadProductList(productlist) {
            var strArr = productlist.map(item => {
                return  str = `
                    <div class="pro">
                        <img src="${item.url}" alt="">
                        <h2>${item.name}</h2>
                        <p>$${item.price}</p>
                    </div>`
            })
            var str = strArr.join('')
            console.log(str);
            const divEle = document.querySelector('.product-list')
            divEle.innerHTML = str
        }


06.接口文档

一个应用程序中有很多接口
一个应用程序都会有一个接口文档
每个接口对应一个业务
在接口中定义:
  请求url地址
  请求方法
  请求参数
    username | password
  相应数据
ex:
      电商网站程序
         注册  登录   商品列表  商品详情   购物车  订单  地址  会员
    定义业务接口
      商品列表接口:
    url:  http://10.7.178.117:3000/productlist
    method: get
    参数: 无
    响应数据:
         [
            {
                id: 1001,
                name: "javascript高级编程",
                price: 89,
                num: 0,
                url: "https://img1.baidu.com/it/u=337910016,91561566&fm=26&fmt=auto"
            },
            {
                id: 1002,
                name: "css高级编程",
                price: 79,
                num: 0,
                url: "https://img1.baidu.com/it/u=454394458,1998378568&fm=253&fmt=auto&app=138&f=JPEG"
            },
    ]


07.get | post请求区别

get和post请求区别
           1. 安全性
              get请求参数拼接在url地址后面
              post请求参数存储在请求包请求正文本中
              post更安全
           2. 参数大小
              post请求比get传输数更大
           3. 参数类型
              get字符串类型数据
              post传输可以任意类型 
                 文件 图片
面试  get请求一定不能传图片吗?
                 http://ip:port/base64=asdfaswqerjpava;shdfpawifn/asnfd;asfdhias;fdnas;f


08.请求头

请求头 content-type
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
           key:value
           content-type:application/x-www-form-urlencoded
           application/x-www-form-urlencoded
              表示参数以名称值对形式组织, 
              比如:  username='admin'&password=123&age=18
            application/json
               表示参数以json形式组织
              比如: {username='admin',password=123}
            multipat/formdate
               表示参数是文件形式
            text/html
相关文章
|
5月前
|
人工智能 网络协议 Linux
MCP 协议: Streamable HTTP 是最佳选择
随着AI应用变得越来越复杂并被广泛部署,原有的通信机制面临着一系列挑战。近期MCP仓库的PR #206引入了一个全新的Streamable HTTP传输层替代原有的HTTP+SSE传输层。本文将详细分析该协议的技术细节和实际优势。
2881 100
|
4月前
|
数据采集 数据可视化 API
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
本文介绍了一种基于QUIC和HTTP/3的异步爬虫方案,用于抓取知乎热榜数据并生成趋势图。通过HTTPX与aioquic结合实现高性能连接复用,配合代理IP绕过反爬限制,提取标题、热度等信息。利用Python代码示例展示了异步抓取流程,并借助Matplotlib绘制话题热度变化图表。分析显示突发热点生命周期短,而深度话题热度更稳定。此方案可优化内容运营策略,快速捕捉潜在爆款话题。
166 4
QUIC协议优化:HTTP/3环境下的超高速异步抓取方案
|
5月前
|
人工智能 Java API
MCP协议重大升级,Spring AI Alibaba联合Higress发布业界首个Streamable HTTP实现方案
本文由Spring AI Alibaba Contributor刘军、张宇撰写,探讨MCP官方引入的全新Streamable HTTP传输层对原有HTTP+SSE机制的重大改进。文章解析Streamable HTTP的设计思想与技术细节,并介绍Spring AI Alibaba开源框架提供的Java实现,包含无状态服务器模式、流式进度反馈模式等多种场景的应用示例。同时,文章还展示了Spring AI Alibaba + Higress的完整可运行示例,分析当前实现限制及未来优化方向,为开发者提供参考。
|
2月前
|
缓存 监控 搜索推荐
301重定向实现原理全面解析:从HTTP协议到SEO最佳实践
301重定向是HTTP协议中的永久重定向状态码,用于告知客户端请求的资源已永久移至新URL。它在SEO中具有重要作用,能传递页面权重、更新索引并提升用户体验。本文详解其工作原理、服务器配置方法(如Apache、Nginx)、对搜索引擎的影响及最佳实践,帮助实现网站平稳迁移与优化。
416 68
|
25天前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
294 2
|
2月前
|
存储 网络协议 安全
HTTP 协议及会话跟踪机制详解
本文详解了 HTTP 协议的核心知识,包括其定义(超文本传输协议,基于 TCP,规定客户端与服务器通信规则)及与 HTTPS 的区别(安全性、端口、资源消耗)。 介绍了 GET 与 POST 请求的差异(参数限制、安全性、应用场景),以及 Restful 风格(通过 URL 定位资源,请求方式决定操作)。列举了常见 HTTP 状态码(如 200 成功、404 资源未找到),对比了转发与重定向的区别(服务器端一次请求 vs 客户端两次请求)。 还阐述了会话跟踪机制:Cookie 基于客户端存储,通过Set-Cookie和Cookie头实现,安全性较低;Session 基于服务端存储,依赖 C
224 1
|
1月前
|
缓存 网络协议 UED
深度解析HTTP协议从版本0.9至3.0的演进和特性。
总的来说,HTTP的演进是互联网技术不断发展和需求日益增长的结果。每一次重要更新都旨在优化性能,增进用户体验,适应新的应用场景,而且保证了向后兼容,让互联网的基础架构得以稳定发展。随着网络技术继续进步,我们可以预期HTTP协议在未来还会继续演化。
333 0
|
2月前
|
XML 安全 网络架构
深度对比SOAP与HTTP协议:详细理解它们的工作原理和差异
在设计服务和系统交云策略时,考虑到上述差异是至关重要的。SOAP适合需要高安全性、可靠性和事务支持的企业级应用。而HTTP适合Web界面浏览、RESTful服务和需要快速响应的轻量级通信。根据具体需求和上下文,开发者可以选择合适的协议以实现最优的系统性能和用户体验。
279 0
|
3月前
|
缓存
HTTP协议深度剖析:常见请求头信息讲解
这就是HTTP请求头背后的工作原理,希望通过比作“邮差”和“标签”,可以让你对这个繁琐技术更有感触,更得心应手。尽管这些信息可能很琐碎,但了解了它们的含义和工作方式,就等于揭开了HTTP协议神秘的面纱,掌控了网络交流的核心。你还等什么,赶快动手尝试一下吧!
121 17