当前位置: 首页 > news >正文

构造HTTP请求

上篇文章:

HTTP协议https://blog.csdn.net/sniper_fandc/article/details/147166900?fromshare=blogdetail&sharetype=blogdetail&sharerId=147166900&sharerefer=PC&sharesource=sniper_fandc&sharefrom=from_link

目录

1 form表单构造HTTP请求

1.1 GET请求

1.2 POST请求

2 ajax构造HTTP请求

2.1 ajax介绍

2.2 引入jQuery

(1)方法1:引入网络地址

(2)方法2:把jQuery的内容拷贝到本地使用

2.3 ajax发送请求

(1)基本使用

(2)跨域问题


1 form表单构造HTTP请求

        form表单只支持GET和POST请求:

1.1 GET请求

    <form action="https://www.baidu.com/" method="GET">

        <input type="text" name="userName">

        <input type="password" name="password">

        <input type="submit" value="提交">

    </form>

        使用form表单构造GET请求,action是请求的地址,method是请求的方法,而input标签中name和输入的数据就构成了查询字符串query string,当点击提交时,GET请求就会发送到百度的服务器地址,然后默认返回百度搜索引擎的首页,使用Fiddler抓包,关键信息如下(注意请求的数据没有放在body中):

1.2 POST请求

    <form action="https://www.baidu.com/" method="post">

        <input type="text" name="userName">

        <input type="password" name="password">

        <input type="submit" value="提交">

    </form>

        使用GET方法发现有个问题,用户名和密码被显示在URL中了,因此实际中登录更多使用的是POST方法,它会把数据放在body中。

        注意:这不意味着POST比GET更安全,因为通过抓包,也会看到用户名和密码,实际上安全性的保证是通过加密机制实现的。

2 ajax构造HTTP请求

2.1 ajax介绍

        ajax全称Asynchronous Javascript And Xml,是一种浏览器和服务器异步交互数据的方式。

        Asynchronous是异步的意思,网络IO的同步和异步是指客户端等待结果的方式(多线程的同步的含义是互斥),客户端主动获取服务器的结果是同步,客户端等待服务器把结果推送给自己是异步。而同步和异步又可以延伸为同步阻塞(死循环主动获取)、同步非阻塞(边做其他事边主动获取)、异步阻塞(死循环等待结果的推送)和异步非阻塞(边做其他事边等待推送结果的推送)。

        浏览器提供给JS的原生的ajax的API是XMLHttpRequest,并不好用,这里使用JS的第三方库jQuery封装的ajax的API:

2.2 引入jQuery

(1)方法1:引入网络地址

        打开jQuery CDN,选择要引入的版本,把网络地址复制粘贴到html文件中:

        这种方式有可能因为网络问题导致无法正常使用(CDN服务器在国外)。

(2)方法2:把jQuery的内容拷贝到本地使用

        打开jQuery的网络地址复制全部内容,本地创建js文件,把内容粘贴进去,引用该文件的本地文件路径即可。

        由于我的jQuery.min.js文件和html在同一级目录下,因此直接使用相对路径即可引用。

2.3 ajax发送请求

(1)基本使用

    <script>

      $.ajax({

        type: 'get',

        url: '请求的地址',

        data: 'body中数据,也可以没有',

        success: function(body){

            // 回调函数:不会被立即执行,而是等待响应后再调用(异步的体现)

            // body参数是http响应中的body

        }

      });

    </script>

        $是jQuery的一个对象,内部包含ajax函数,该函数允许接受对象类型的参数。type表示请求的方法,包括http协议允许的多种;url是请求的资源的地址;data表示在请求的body中放入的参数;success: function(body)是回调函数,不会被立即执行,如果响应成功返回,才会执行触发浏览器调用该函数,这也是ajax异步特性的体现。如果响应返回,调用success: function(body)时,就可以从body参数中获取响应中body存储的数据,进一步按需求操作。

        注意:这里的url参数的写法,如果是/开头说明是绝对路径,就必须写全,比如要访问的路径是http://localhost:8080/firstServlet/hello,这是在firstServlet项目中某个方法的路径hello,因此要访问这方法的绝对路径就必须写成/firstServlet/hello。如果不以/开头,就说明是相对路径,此时如果写成url: 'hello',就说明hello所标识方法所在的文件一定和该html页面在同一级目录,即/firstServlet/xxx.html(注意:实际开发中,所有的xxx.html都是放在项目中的webapp目录下,让Tomcat可以找到,即访问路径时webapp省略,也就是省略后在同一级)和/firstServlet/hello。

(2)跨域问题

        如果在当前域名下请求的url是其他服务器域名地址,就会出现“跨域”问题。即一个域名默认不允许通过ajax请求访问另一个域名的服务器(比如不允许搜狗在页面中的代码请求访问百度服务器),这是浏览器的默认行为,除非另一个域名的服务器允许跨域。

下篇文章:

相关文章:

  • mapbox V3 新特性,加载风粒子动画
  • VSCode 降低适用版本并且关闭自动更新
  • 代码随想录第17天:二叉树
  • Spring Boot 集成 RocketMQ 全流程指南:从依赖引入到消息收发
  • 【Three.js基础学习】35.Particles Cursor Animation Shader
  • 【笔记】对抗训练-GAN
  • 论文精度:双分支图Transformer网络:视频驱动的3D人体网格重建新突破
  • 记一次某网络安全比赛三阶段webserver应急响应解题过程
  • Spring Cloud主要组件介绍
  • 解密Oracle数据库RAC技术原理:构建高可用、可扩展的集群数据库
  • sward安装及入门指南
  • 揭秘大数据 | 20、软件定义数据中心
  • ELK+Filebeat 深度部署指南与实战测试全解析
  • MySQL聚合查询
  • 利用 限制torch线程数与异步方法提升声纹识别效率
  • 旧版 VMware 虚拟机迁移至 KVM 平台-案例2
  • 动手强化学习之马尔可夫决策(机器人篇)
  • keil如何创建一个工程
  • STM32单片机入门学习——第36节: [11-1] SPI通信协议
  • C++中extern关键字
  • 新童谣童诗征稿活动在沪开启:设三个创作主题,面向全国征集
  • 新华社经济随笔:机器人“摔倒、爬起”的背后
  • 云南一季度GDP为7490.99亿元,同比增长4.3%
  • 中国在建结构第一高楼“天津117大厦”将复工,预计2027年完工
  • 女子伸腿阻止高铁关门被拘,央媒:严格依规公开处理以儆效尤
  • 新华社经济随笔:把握不确定性中的确定性