JSONP处理跨域请求

ops/2024/11/20 17:56:28/

JSONP

背景

由于浏览器存在安全策略,所以当访问的请求中的协议、域名、端口其中一个与本站不同时就会形成跨域,这里介绍一种比较简单的方案——jsonp。

原理

浏览器对 script、img这些带有src属性的的标签在发送请求时是不会触发跨域的校验,所以可以通过script 发送一个请求,并在这个请求url中带上前端本地的回调函数名,由后端返回的脚本中执行该方法,并把数据传到该方法中。

function ajaxJsonp(url, params) {return new Promise((resolve, reject) => {// 创建一个唯一的回调函数名const callbackName = `jsonpCallback${Math.random().toString(36).substr(2, 9)}`;// 构建请求 URLparams = params || {};params.callback = callbackName;const queryString = new URLSearchParams(params).toString();const fullUrl = `${url.indexOf("?") !== -1 ? url + "&" + queryString : url + "?" + queryString}`;// const handelUrl = handleUrlByGet(params, fullUrl);// 创建 <script> 标签并设置 src 属性const script = document.createElement("script");script.src = fullUrl;// 定义全局回调函数window[callbackName] = (data) => {resolve(data);document.head.removeChild(script);delete window[callbackName];};// 监听脚本加载错误script.onerror = () => {reject(new Error("JSONP request failed"));document.head.removeChild(script);};// 将 <script> 标签添加到文档中document.head.appendChild(script);});

http://www.ppmy.cn/ops/135290.html

相关文章

tcp的网络惊群问题

1. SO_REUSEPORT 可以解决epoll的惊群问题 但是&#xff0c;现在的 TCP Server&#xff0c;一般都是 多进程多路IO复用(epoll) 的并发模型&#xff0c;比如我们常用的 nginx 。如果使用 epoll 去监听 accept socket fd 的读事件&#xff0c;当有新连接建立时&#xff0c;所有进…

时序数据基础TDEngine

时序数据基础 什么是时序数据&#xff1f;​ 时序数据&#xff0c;即时间序列数据&#xff08;Time-Series Data&#xff09;&#xff0c;它们是一组按照时间发生先后顺序进行排列的序列数据。日常生活中&#xff0c;设备、传感器采集的数据就是时序数据&#xff0c;证券交易…

数据结构(单向链表——c语言实现)

链式存储的优缺点&#xff1a; 优点&#xff1a; 1、动态分配内存&#xff1a; 链式存储不需要在数据插入之前分配固定大小的数组或内存块&#xff0c;因此它更适合存储动态变化的数据 2、高效的插入和删除操作&#xff1a; 在链表中插入或删除元素只需要调整相邻节点的指…

前端注册代码

代码 <template><el-card class"register" style"max-width: 480px ; background-color: aliceblue;"><template #header><div class"card-header"><span>注册</span></div></template><el…

网络编程-002-UDP通信

1.UDP通信的简单介绍 1.1不需要通信握手,无需维持连接,网络带宽需求较小,而实时性要求高 1.2 包大小有限制,不发大于路径MTU的数据包 1.3容易丢包 1.4 可以实现一对多,多对多 2.客户端与服务端=发送端与接收端 代码框架 收数据方一般都是客户端/接收端 3.头文件 #i…

【Android、IOS、Flutter、鸿蒙、ReactNative 】实现 MVP 架构

Android Studio 版本 Android Java MVP 模式 参考 模型层 model public class User {private String email;private String password;public User(String email, String password) {this.email = email;this.password = password;}public String getEmail() {return email;}…

单片机的基本组成与工作原理

单片机&#xff08;Microcontroller Unit, MCU&#xff09;是一种将计算机的主要部分集成在一个芯片上的小型计算机系统。它通常包括中央处理器&#xff08;CPU&#xff09;、存储器&#xff08;Memory&#xff09;、输入输出接口&#xff08;I/O Ports&#xff09;、定时器/计…

天津渤海职业技术学院“讯方技术HarmonyOS人才训练营”圆满开展

5月6日-8日&#xff0c;讯方技术与天津渤海职业技术学院联合成功举办了一场技术盛宴——HarmonyOS人才训练营&#xff0c;吸引了学院网络专业的140余名学生踊跃参与。讯方技术专家帖莎娜作为本次训练营的讲师&#xff0c;为学生们提供了全面、深入的HarmonyOS操作系统技术讲解与…