Ajax学习笔记第5天

news2024/9/23 17:53:58

无论做什么,都请记得那是为自己而做,那就毫无怨言!

1. 跨域
1.什么是跨域

跨域是指浏览器不能执行其他网站的脚本。它是浏览器同源策略造成的,是浏览器对JS实施的安全限制。


2.常见的跨域场景

036.png


3.什么事同源策略

(所谓同源是指:“域名”、“协议”、“端口”均为相同)

注意:跨域限制是浏览器的机制,如果直接在服务端请求,是不会触发跨域限制的。


2. JSONP
  • Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
  • 为什么我们从不同的域(网站)访问数据需要一个特殊的技术( JSONP )呢?这是因为同源策略。同源策略,它是由 Netscape 提出的一个著名的安全策略,现在所有支持 JavaScript 的浏览器都会使用这个策略。
  • 如客户想访问 : https://www.runoob.com/try/ajax/jsonp.php?jsoncallback=callbackFunction
  • 假设客户期望返回数据:[“customername1”,“customername2”]。
  • 真正返回到客户端的数据显示为: callbackFunction([“customername1”,“customername2”])----JSONP 格式数据
  • demo.html
<script src="demo.js"></script>
<script>
sayHello();
</script>
  • demo.js
function sayHello(){
  alert("我是ikunGG,练习时长两年半");
}

032.gif

调用和设置方法换了一个位置

  • demo.html
<script>
function sayHello (str)
{
  alert(str);
}
</script>
<script src="demo.js"></script>
  • demo.js
sayHello('我是ikunGG,练习时长两年半');

032.gif

JSONP:JSONP其实就是模仿这个方法将调用传入的数据,前端设置方法接收
  • test.html
<script>
function sayHello(str) {
  console.log(str);
}
</script>
<script src="test.js"></script>
  • test.js:此时我们的test.js如果传入的是参数
sayHello({
  "info": [
   {
      "id":10001,
      "name": "小明",
      "age": 18,
      "sex": "男"
    },
    {
      "id":10002,
      "name": "小兰",
      "age": 15,
      "sex": "男"
    },
    {
      "id":10003,
      "name": "小红",
      "age": 14,
      "sex": "男"
    }
  ]
})

033.png

我们会知道如果使用JSONP跨域,一定和后端是约定俗称的数据格式,JSONP数据很不安全,除非你比较信任数据来源,如果涉及到涉密信息,一定不能使用JOSNP,比如数据中有用户的手机号,身份证号码等等;

比如京东某个手机的 评论的数据就是JSONP格式

034.png

fetchJSON_comment98({"productAttr":null,"productCommentSummary"……,"firstCategory":9987,"secondCategory":653,"thirdCategory":655,"aesPin":null,"days":4,"afterDays":0}]});

fetchJSON_comment98({数据})

  • 【1】使用原生js是可以模拟发送JSONP请求的
<input type="button" value="点击发送请求" id="btn">
<script>
var btn = document.getElementById("btn");
function fetchJSON_comment98(JSONData) {
  console.log(JSONData)
}
btn.onclick = function() {
  // 创建一个script标签
  var oScript = document.createElement("script");
  // 追加节点
  document.body.appendChild(oScript);
  // 设置src属性
  oScript.src= 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100009345181&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1'
  // 发送请求后立即删除这个script
  document.body.removeChild(oScript)
}
</script>
  • 然后本地需要设置一个固定的方法名称:fetchJSON_comment98()
function fetchJSON_comment98(JSONData) {
  console.log(JSONData)
}
  • 我们就可以拿到京东某个商品的评论的数据:【在本地的浏览器拿到服务器A存放京东商品评论的数据】

035.gif

  • 【2】jQuery的JSONP
<input type="button" value="点击发送请求" id="btn">
<script src="js/jquery.min.js"></script>
<script >
$("#btn").click(function(){
  $.ajax("https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100009345181&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1",{
    "dataType": "jsonp", //请求类型
    "jsonpCallback": 'fetchJSON_comment98', //设置回调函数名称
    "success": function(JSONdata) {
      console.log(JSONdata)
    }
  })
})
</script>
  • jQuery帮我们封装好了JSONP请求: jQuery封装的JSONP请求机理和我们自己写的请求机理是相同的。

    • 创建一个script标签,src是含有JSONP格式的跨域请求地址

    • 定义了一个函数,函数名是JOSNP格式返回数据的固定名称,方法封装到了success中

    • 删除script标签

  • 我们就可以拿到京东某个商品的评论的数据:【在本地的浏览器拿到服务器A存放京东商品评论的数据】

035.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152412.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python + requests接口自动化测试详解

框架详细教程前段时间由于公司测试方向的转型&#xff0c;由原来的web页面功能测试转变成接口测试&#xff0c;之前大多都是手工进行&#xff0c;利用postman和jmeter进行的接口测试&#xff0c;后来&#xff0c;组内有人讲原先web自动化的测试框架移驾成接口的自动化框架&…

电子学会C/C++编程等级考试2023年05月(六级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:字符串插入 有两个字符串str和substr,str的字符个数不超过10,substr的字符个数为3。(字符个数不包括字符串结尾处的’\0’。)将substr插入到str中ASCII码最大的那个字符后面,若有多个最大则只考虑第一个。 时间限制:1000 …

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测(自注意力机制)

分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09; 目录 分类预测 | Matlab实现KOA-CNN-LSTM-selfAttention多特征分类预测&#xff08;自注意力机制&#xff09;分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Mat…

Jmeter(十八):硬件性能监控指标详解

硬件性能监控指标 一、性能监控初步介绍 性能测试的主要目标 1.在当前的服务器配置情况&#xff0c;最大的用户数 2.平均响应时间ART&#xff0c;找出时间较长的业务 3.每秒事务数TPS&#xff0c;服务器的处理能力 性能测试涉及的内容 1.客户端性能测试&#xff1a;web前…

Xcode15 模拟器 Rosetta 模式

打开Xcode15的方式其实没有Rosetta 选项了&#xff0c;但是可以跑Xcode默认Rosetta 模拟器。在xcode中如下方式打开&#xff1a; Product -> Destination -> Destination Architectures -> 打开Show Rosetta Destinations 然后用这些带Rosetta的模拟器运行&#xff1…

嵌入式应用选择正确的系统设计方法:第一部分

现代嵌入式开发设计的功能规格丰富&#xff0c;并且必须在成本&#xff0c;性能等方面遵守多项其他要求&#xff0c;因此它们本质上是复杂的。因此&#xff0c;在设计大型系统时&#xff0c;我们需要方法和框架来帮助指导我们的决策。 在这个由三部分组成的系列的第一部分中&a…

2023年国赛如何运行脚本文件

1、设备脚本文件运行&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1xqLvO0k7LIJVLkzcL0KohQ?pwdwgzj 提取码&#xff1a;wgzj 二维码 2、linux虚拟机脚本文件运行 链接&#xff1a;https://pan.baidu.com/s/1vzRt01AT4u77ynel1KWCaw?pwdwgzj 提取码&#xff1…

马应龙-600993 三季报分析(20231030)

马应龙-600993 基本面分析 基本情况 公司名称&#xff1a;马应龙药业集团股份有限公司 A股简称&#xff1a;马应龙 成立日期&#xff1a;1994-05-09 上市日期&#xff1a;2004-05-17 所属行业&#xff1a;医药制造业 周期性&#xff1a;0 主营业务&#xff1a;主要从事中西药制…

正则表达式引擎比较(翻译自:A comparison of regex engines)

原文&#xff1a; A comparison of regex engines – Rust Leipzig 引言 正则表达式&#xff08;或简称regex&#xff09;通常用于模式搜索算法。 有许多不同的正则表达式引擎提供不同的表达式支持、性能约束和语言绑定。 基于 John Maddock 之前的工作 (regex comparison)和…

C++前缀和算法的应用:统计中位数为 K 的子数组

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 题目 给你一个长度为 n 的数组 nums &#xff0c;该数组由从 1 到 n 的 不同 整数组成。另给你一个正整数 k 。 统计并返回 nums 中的 中位数 等于 k 的非空子数组的…

【用Percona Toolkit给mysql大表在不锁表的情况下建索引】

用Percona Toolkit给mysql大表在不锁表的情况下建索引 安装Percona Toolkit建立索引 安装Percona Toolkit 共分为两步骤&#xff1a; 配置仓库 安装文档1 安装 安装文档2 建立索引 由于mysql8默认使用的是caching_sha2_password&#xff0c;认证方式&#xff0c;而Percona…

javaEE -11(10000字HTML入门级教程)

一&#xff1a; HTML HTML 代码是由 “标签” 构成的. 例如&#xff1a; <body>hello</body>标签名 (body) 放到 < > 中大部分标签成对出现. 为开始标签, 为结束标签.少数标签只有开始标签, 称为 “单标签”.开始标签和结束标签之间, 写的是标签的内容. (h…

软件工程:小组开发过程技术(VS VSS UNIX C++)

&#xff08;注&#xff1a;这个东西是2007年写的&#xff0c;算是个缅怀&#xff0c;或是个吐槽。所有注都是本次发布新加的。&#xff09; 简介 本文讲述完全没有软件工程经验的软件小组如何借助VS VSS等工具为UNIX开发C程序&#xff0c;实现在小组规模的初级开发过程。这不…

【Linux】——使用yum进行软件安装和卸载Win和Linux文件交互

个人主页点击直达&#xff1a;小白不是程序媛 Linux系列专栏&#xff1a;Linux被操作记 目录 前言&#xff1a; Linux软件包管理器yum 什么是软件包 ​编辑软件查找 如何安装软件 如何卸载软件 lrzsz的使用 将Windows的文件传送到Linux 将Linux的文件传送到Windows …

Linux作业ssh双向免密登陆

目录 步骤一&#xff1a;双方都生成非对称密钥 步骤二&#xff1a;将生成的id_rsa.pub文件发送到对端 步骤三&#xff1a;检测 步骤一&#xff1a;双方都生成非对称密钥 [rootserver ~]# ssh-keygen -t rsa [rootnode1 ~]# ssh-keygen -t rsa 查看是否生成&#xff1a; 步…

torch.nn中有哪些损失函数?

在PyTorch库的torch.nn模块中&#xff0c;提供了许多预定义的损失函数&#xff0c;用于不同的机器学习任务。以下是一些常见的损失函数&#xff1a; MSELoss&#xff08;均方误差损失&#xff09;: 常用于回归问题&#xff0c;计算预测值与真实值之间的平均平方误差。 import…

【AcWing】1.1.3二分搜索

一、二分搜索 1、查找数的范围 原题链接  这道题看似是二分搜索的题目&#xff0c;实则就是二分搜索。与一般的搜索不同的是&#xff0c;若查找元素重复&#xff0c;则分别返回重复元素的左端下标和右端下标&#xff0c;若不存在则返回“-1 -1。我们常用的二分搜索是返回的…

在Vue.js中,什么是单文件组件(Single File Component)?它的结构是怎样的?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

基于物联网、大数据、云计算、人工智能等技术的智慧工地源码(Java+Spring Cloud +UniApp +MySql)

智慧工地是指利用物联网、大数据、云计算、人工智能等技术手段&#xff0c;为建筑施工现场提供智能硬件及物联网平台的解决方案&#xff0c;实现建筑工地的实时化、可视化、多元化、智慧化、便捷化。智慧工地的建设目标是实现全天候的管理监控&#xff0c;提高施工效率和质量&a…

【机器学习合集】模型设计之分组网络 ->(个人学习记录笔记)

文章目录 分组网络1. 什么是分组网络1.1 卷积拆分的使用1.2 通道分离卷积的来源1.3 GoogLeNet/Inception1.4 从Inception到Xception(extreme inception)1.5 通道分组卷积模型基准MobileNet 2. 不同通道分组策略2.1 打乱重组的分组2.2 多尺度卷积核分组2.3 多分辨率卷积分组2.4 …