前端面试题---跨域处理和异常、错误处理
一.跨域处理
在前端开发中,当我们在浏览器中向不同域名或端口发起请求时,就会遇到跨域请求的限制。为了处理跨域请求,有几种常见的方法
1.JSONP(JSON with Padding)
JSONP是一种利用 <script>
标签可以跨域加载的特性来实现跨域请求的方法。服务器端返回的数据会被包裹在一个JavaScript函数调用中,并通过动态创建<script>
标签来加载执行。
假设有一个前端应用程序需要从跨域的 API 获取数据,并处理返回的 JSON 数据。可以使用 JSONP 来实现跨域请求和数据获取。
function handleResponse(data) {// 处理返回的数据console.log(data);
}var script = document.createElement('script');
script.src = 'http://example.com/api?callback=handleResponse';
document.body.appendChild(script);
在这个例子中,我们定义了一个回调函数 handleResponse
来处理返回的数据。然后,我们动态创建了一个 <script>
标签,并将其 src
属性设置为跨域 API 的 URL,同时在 URL 的查询参数中指定了回调函数的名称为 handleResponse
。
服务器端的响应应该是一个 JavaScript 函数调用,其中包含要传递给回调函数的数据。例如,服务器端可以返回以下响应
handleResponse({"name": "John", "age": 25});
当浏览器加载 <script>
标签时,它会执行服务器返回的 JavaScript 代码,并将数据作为参数传递给回调函数 handleResponse
。这样,前端应用程序就可以在回调函数中获取到返回的数据,并进行进一步的处理。
需要注意的是,JSONP 只支持 GET 请求,因为它是通过动态创建 <script>
标签来加载数据的。另外,服务器端需要支持 JSONP,即返回指定的回调函数调用。在开发中,可以与后端开发人员协商,确保 API 返回 JSONP 格式的数据。
2.CORS(Cross-Origin Resource Sharing)
CORS是现代浏览器支持的一种跨域请求解决方案。在服务器端设置响应头来指示允许跨域访问。
在服务器端的响应头中添加如下字段.允许请求所有的域名.
res.header('Access-Control-Allow-Origin', '*');
3.代理服务器
使用代理服务器是另一种处理跨域请求的方法。前端应用程序通过发送请求到同一域名下的代理服务器,然后由代理服务器转发请求到目标域名。
例如,可以在服务器端创建一个API代理路由,将前端应用程序中的请求发送到该路由,然后代理服务器再将请求转发到目标API
app.get('/api', (req, res) => {// 在这里将请求转发到目标API
});
这种方法需要在服务器端进行配置和处理。
二.异常、错误处理
在 JavaScript 中处理异常和错误非常重要,这样可以增强代码的稳定性和可靠性。下面是一些处理 JavaScript 异常和错误的常见方法
1.使用 try-catch 块
使用 try-catch 块可以捕获和处理代码块中的异常。将可能抛出异常的代码放在 try 块中,然后在 catch 块中处理异常。
try {// 可能抛出异常的代码
} catch (error) {// 处理异常
}
在 catch 块中,可以根据具体情况进行相应的异常处理,例如记录错误日志、显示用户友好的错误信息等。
2.使用 try-catch-finally 块
除了 try-catch 块外,还可以使用 finally 块。finally 块中的代码会在 try-catch 块中的代码执行后无论是否发生异常都会执行。可以在 finally 块中释放资源或执行必要的清理操作。
try {// 可能抛出异常的代码
} catch (error) {// 处理异常
} finally {// 执行清理操作
}
3.抛出自定义异常
除了捕获异常,还可以在代码中主动抛出自定义异常。通过 throw 语句抛出一个 Error 对象或自定义的错误对象。
throw new Error('自定义异常信息');
可以根据具体情况创建自定义的错误对象,并携带相应的错误信息和其他相关数据。
4.全局错误处理
可以通过捕获全局错误事件来处理未被捕获的异常。在 window 对象上监听 error 事件,当任何未被捕获的异常发生时,可以在该事件处理程序中进行相应的处理。
window.addEventListener('error', function(event) {// 处理全局错误
});
可以在全局错误处理程序中记录错误信息、发送错误报告等。
5.使用断言(assert)
断言是一种在代码中检查条件是否为真的机制。可以使用断言来确保代码中的某些前置条件和后置条件得到满足,如果条件不满足,则会抛出异常。
console.assert(condition, message);
其中,condition 是一个表达式,如果为 false,则会抛出 AssertionError 异常,并显示指定的错误信息 message。
相关文章:
前端面试题---跨域处理和异常、错误处理
一.跨域处理 在前端开发中,当我们在浏览器中向不同域名或端口发起请求时,就会遇到跨域请求的限制。为了处理跨域请求,有几种常见的方法 1.JSONP(JSON with Padding) JSONP是一种利用 <script> 标签可以跨域加载…...
网络安全之反序列化漏洞分析
简介 FastJson 是 alibaba 的一款开源 JSON 解析库,可用于将 Java 对象转换为其 JSON 表示形式,也可以用于将 JSON 字符串转换为等效的 Java 对象分别通过toJSONString和parseObject/parse来实现序列化和反序列化。 使用 对于序列化的方法toJSONStrin…...
19 贝叶斯线性回归
文章目录 19 贝叶斯线性回归19.1 频率派线性回归19.2 Bayesian Method19.2.1 Inference问题19.2.2 Prediction问题 19 贝叶斯线性回归 19.1 频率派线性回归 数据与模型: 样本: { ( x i , y i ) } i 1 N , x i ∈ R p , y i ∈ R p {\lbrace (x_i, y_…...
第七十天学习记录:高等数学:微分(宋浩板书)
微分的定义 基本微分公式与法则 复合函数的微分 微分的几何意义 微分在近似计算中应用 sin(xy) sin(x)cos(y) cos(x)sin(y)可以用三角形的几何图形来进行证明。 假设在一个单位圆上,点A(x,y)的坐标为(x,y),点B(x’, y’)的坐标为(x’, y’)。则以两点…...
Jmeter
目录 一、jmeter 安装 二、jmeter 介绍 1、jmeter是什么? 2、jmeter 用来做什么? 3、优点 4、缺点 5、jmeter 目录介绍 ①_bin 目录介绍 ② docs 目录 — — 接口文档目录 ③ extras目录 — — 扩展插件目录 ④ lib 目录 — — 所用到的插件目录 ⑤ lic…...
Flutter 学习 之 时间转换工具类
Flutter 学习之时间转换工具类 在 Flutter 应用程序开发中,处理时间戳是非常常见的需求。我们通常需要将时间戳转换为人类可读的日期时间格式。为了实现这一点,我们可以创建一个时间转换工具类。 实现方法 以下是一个简单的时间转换工具类的示例&…...
docker consul
docker consul的容器服务更新与发现 服务注册与发现是微服务架构中不可或缺的重要组件,起始服务都是单节点的,不保障高可用性,也不考虑服务的承载压力,服务之间调用单纯的通过接口访问的,直到后来出现多个节点的分布式…...
全志V3S嵌入式驱动开发(开发环境再升级)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的…...
ChatGPT:人工智能助手的新时代
ChatGPT:人工智能助手的新时代 文章目录 ChatGPT:人工智能助手的新时代引言ChatGPT的原理GPT-3.5架构概述预训练和微调过程生成式对话生成技术 ChatGPT的应用场景智能助理客服机器人虚拟角色教育辅助创意生成个性化推荐 ChatGPT的优势ChatGPT的使用技巧与…...
【面试】二、Java补充知识
JVM中的存储 JVM的五块存储区: 方法区(线程共享) 方法区用来存储类的各种信息(类名、方法信息等)、静态变量、常量和编译后的代码也存储在方法区中 方法区中也存在运行时常量池 常量池中会存放程序运行时生成的各种…...
LISTENER、TNSNAMES和SQLNET配置文件
LISTENER、TNSNAMES和SQLNET配置文件 用户连接验证listener.ora文件配置监听日志local_listener参数 tnsnames.ora文件配置 sqlnet.ora文件配置 用户连接验证 Oracle数据库中用户有三种常见的登录验证方式: 通过操作系统用户验证:必须是在数据库服务器…...
【Leetcode -225.用队列实现栈 -232.用栈实现队列】
Leetcode Leetcode -225.用队列实现栈Leetcode -232.用栈实现队列 Leetcode -225.用队列实现栈 题目:仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 …...
悟道3.0全面开源!LeCun VS Max 智源大会最新演讲
夕小瑶科技说 原创 作者 | 小戏 2023 年智源大会如期召开! 这场汇集了 Geoffery Hinton、Yann LeCun、姚期智、Joseph Sifakis、Sam Altman、Russell 等一众几乎是 AI 领域学界业界“半壁江山”的大佬们的学术盛会,聚焦 AI 领域的前沿问题,…...
2023蓝桥杯大学A组C++决赛游记+个人题解
Day0 发烧了一晚上没睡着,感觉鼻子被打火机烧烤一样难受,心情烦躁 早上6点起来吃了个早饭,思考能力完全丧失了,开始看此花亭奇谭 看了六集,准备复习数据结构考试,然后秒睡 一睁眼就是下午2点了 挂了个…...
wkhtmltopdf踩坑记录
1. 不支持writing-mode。 需求是文字纵向排列,内容从左到右,本来用的是writing-mode: tb-rl;,插件转pdf后发现失效。 解决方法: 让每一列文字单独用一个div容器包裹,对它的宽度进行限制,控制每一行只能出现…...
贪心算法part2 | ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II
文章目录 122.买卖股票的最佳时机II思路思路代码官方题解困难 55. 跳跃游戏思路思路代码官方题解代码困难 45.跳跃游戏II思路思路代码困难 今日收获 122.买卖股票的最佳时机II 122.买卖股票的最佳时机II 思路 局部最优:将当天价格和前一天比较,价格涨…...
[C++]异常笔记
我不怕练过一万种腿法的对手,就怕将一种腿法 练一万次的对手。 什么是C的异常 在C中,异常处理通常使用try-catch块来实现。try块用于包含可能会抛出异常的代码,而catch块用于捕获并处理异常。当异常被抛出时,程序会跳过try块中未执行…...
浅谈一级机电管道设计中的压力与介质温度
管道设计是工程设计中的一个非常重要的部分,管道的设计需要考虑到许多因素,其中就包括管道设计压力分类和介质温度分类。这两个因素是在设计管道时必须非常严格考虑的, 首先是管道设计压力分类。在管道设计中,根据工作要求和要传输…...
Docker网络模型(八)使用 macvlan 网络
使用 macvlan 网络 一些应用程序,特别是传统的应用程序或监控网络流量的应用程序,期望直接连接到物理网络。在这种情况下,你可以使用 macvlan 网络驱动为每个容器的虚拟网络接口分配一个MAC地址,使其看起来像一个直接连接到物理网…...
控制视图内容的位置
文本域中的提示内容在默认情况下是垂直居中的,要改变文本在文本域中的位置,可以使用android:gravity来实现。 利用android:gravity可以指定如何在视图中放置视图内容,例如,如何在文本域中放置文本。 如果希望视图文本显示在上方&a…...
【分布式系统与一致性协议】
分布式系统与一致性协议 CAP原理APCPCA总结BASE理论 一致性拜占庭将军问题 分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的设计目标一般包含如下: 可用性:可用性是分…...
音视频领域的未来发展方向展望
文章目录 音视频领域的未来发展方向全景音视频技术虚拟现实和增强现实的区别 人工智能技术可视化智能分析智能语音交互图像识别和视频分析技术 语音处理智能推荐技术远程实时通信 流媒体技术未来方向 音视频领域的未来发展方向 全景音视频技术:全景音视频技术是近年…...
时间同步/集群时间同步/在线/离线
目录 一、能够连接外网 二、集群不能连接外网--同步其它服务器时间 一、能够连接外网 1.介绍ntp时间协议 NTP(Network Time Protocol)网络时间协议,是用来使计算机时间同步的一种协议,它可以使计算机对其服务器或时钟源做同步…...
基于BP神经网络对MNIST数据集检测识别(numpy版本)
基于BP神经网络对MNIST数据集检测识别 1.作者介绍2.BP神经网络介绍2.1 BP神经网络 3.BP神经网络对MNIST数据集检测实验3.1 读取数据集3.2 前向传播3.3 损失函数3.4 构建神经网络3.5 训练3.6 模型推理 4.完整代码 1.作者…...
HTML5-创建HTML文档
HTML5中的一个主要变化是:将元素的语义与元素对其内容呈现结果的影响分开。从原理上讲这合乎情理。HTML元素负责文档内容的结构和含义,内容的呈现则由应用于元素上的CSS样式控制。下面介绍最基础的HTML元素:文档元素和元数据元素。 一、构建…...
Vue中Axios的封装和API接口的管理
一、axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSR…...
MLIR面试题
1、请简要解释MLIR的概念和用途,并说明MLIR在编译器领域中的重要性。 MLIR(Multi-Level Intermediate Representation)是一种多级中间表示语言,提供灵活、可扩展和可优化的编译器基础设施。MLIR的主要目标是为不同的编程语言、领域专用语言(DSL)和编译器…...
***杨辉三角_yyds_LeetCode_python***
1.题目描述: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows …...
Mac使用DBeaver连接达梦数据库
Mac使用DBeaver连接达梦数据库 下载达梦驱动包 达梦数据库 在下载页面随便选择一个系统并下载下来。 下载下来的是zip的压缩包解压出来就是一个ISO文件,然后我们打开ISO文件进入目录:/dameng/source/drivers/jdbc 进入目录后找到这几个驱动包&#x…...
spring.expression 随笔0 概述
0. 我只是个普通码农,不值得挽留 Spring SpEL表达式的使用 常见的应用场景:分布式锁的切面借助SpEL来构建key 比较另类的的应用场景:动态校验 个人感觉可以用作控制程序的走向,除此之外,spring的一些模块的自动配置类,也会在Cond…...
宁波网站建设哪个公司好/搜索引擎优化的例子
曲线C绕y轴旋转所成的旋转曲面的方程为曲面之柱面、旋转面、椭球面 欧阳顺湘 北京师范大学 Recall 曲面方程(Equations for a Surface): 更多曲面 柱 面 旋转面 椭球面 旋转面 以一条平面曲线绕其平面上的一条直线旋转一周所成的曲面叫做旋转曲面。这条直线叫做旋转…...
为什么有的公司做很多个网站/深圳网络推广公司排名
1、简单介绍该错误发生的背景: 1) 数据库版本:MySQL5.7.19 2) 对一个大表修改字段类型DDL(将主键id int变为bigint),为了不影响主库业务,先在从库上执行DDL操作,然后通过…...
国外那些网站做展厅比较好/网站提交入口
方差分析针对因子型解释变量(也即分组变量)进行建模,而回归分析一般针对连续型解释变量进行建模。方差分析基于贝叶斯概率理论判断组间差异,而回归分析则可以基于最大似然法推断模型参数。这两种分析是很多数理统计例如组间差异分析(Metastats、Adonis、…...
上传网站程序/做一个网站要花多少钱
关于kafka的环境搭建这里略过。 1. 正常流程 1.1 添加maven依赖 <dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.2.0</version></dependency>&…...
网站设计宽度/谷歌优化推广
运行Oracle 11g下的setup.exe 配置安全更新 安装选项 系统类 典型安装 检查系统条件 概要 安装 创建数据库 数据库口令管理 解锁Scott用户并设置密码,完成 连接(打开sql plus,或其他数据库管理工具,例如navicat) 关闭…...
h5网站建设价格/网络营销心得体会300字
基于Cesium的材质线插件,引入即可使用,需要的自取。 插件地址:传送门 在线访问: 查看地址 使用 // 自定义纹理材质let MaterialLineImage [./src/line.png,./src/line2.png,./src/line3.png,]// colorlet colors [new Cesium.Color(77 …...