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

JSONP跨域

1 概述

定义

json存在的意义:

不同类型的语言,都能识别json

JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。由于同源策略,一般来说位于 server1.example.com 的网页无法与不是 server1.example.com的服务器沟通,而 HTML 的

image-20240731100716457

  • 跨域:浏览器A服务器B获取的静态资源,包括Html、Css、Js,然后在Js中通过Ajax访问C服务器的静态资源或请求。即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源。
  • 同源策略:同一个请求协议(如:Http或Https)、同一个Ip、同一个端口,3个全部相同,即为同源。

2 demo

后端

<?php$arr=["name"=>"woniu","age"=>20];//把数组转成json字符串,$json = json_encode($arr);//输出echo $json;
?>

前端

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./jquery-3.4.1.min.js"></script>
</head>
<body><h1>前端</h1><script>$.getJSON("后端的地址",function(data){alert(JSON.stringify(data));})</script>
</body>
</html>

用户访问

192.168.190.134/woniu/demo31.html

查看控制台:

image-20240731102921872

解决方案

  • JSONP
  • CORS

3 JSONP

image-20240731105929545

image-20240731112347075

后端

<?php$arr=["name"=>"woniu","age"=>20];//把数组转成json字符串,$json = json_encode($arr);$callback = $_GET["callback"]; // 函数对象, 字符串//输出///echo $json;echo "$callback('$json')";
?>

前端

# 方法一:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./jquery-3.7.1.min.js"></script>
</head>
<body><h1>前端</h1><script>// function xxx(data){//     // 后端返回的data json//     console.log("999");// }</script><script>$.getJSON("http://192.168.190.133/wh069/demo31.php?callback=?",function(data){alert(JSON.stringify(data));// alert(JSON.parse(data));  // 反序列化 // json:序列化和反序列化})</script>
</body>
</html># 方法二:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="./jquery-3.7.1.min.js"></script>
</head>
<body><h1>前端</h1><script>function xxx(data){// 后端返回的data jsonalert(JSON.stringify(data));}</script><script src="http://192.168.190.133/wh069/demo31.php?callback=xxx"></script>
</body>
</html>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • IDEA优化配置,提高启动和运行速度
  • 什么牌子的洗地机好用?推荐多款质量好洗地机的品牌
  • 说下Linux特点,与windows的区别
  • 【C++标准库】模拟实现string类
  • 【Python】pandas:排序、重复值、缺省值处理、合并、分组
  • 【numpy】浮点数比较大小
  • Oat++ 后端实现跨域
  • Linux非常强大的一个命令find
  • 通过知识管理提升财务卓越性
  • QT自适应布局中尺寸控制相关的resize、resizeEvent分析
  • 【前端手写代码】手写instanceof方法
  • Python 中的 NotImplemented 和 NotImplementedError
  • HTTP协议详解(一)
  • 并发编程工具集——Future(二十七)
  • 【CPS出版】2024年智能计算与数据分析国际学术会议(ICDA 2024,9月6日-8)
  • [Vue CLI 3] 配置解析之 css.extract
  • 【mysql】环境安装、服务启动、密码设置
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • bearychat的java client
  • Computed property XXX was assigned to but it has no setter
  • create-react-app项目添加less配置
  • iOS | NSProxy
  • JavaScript 奇技淫巧
  • Java深入 - 深入理解Java集合
  • mongo索引构建
  • Python进阶细节
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vuex 学习笔记 01
  • 程序员该如何有效的找工作?
  • 对超线程几个不同角度的解释
  • 复习Javascript专题(四):js中的深浅拷贝
  • ------- 计算机网络基础
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 试着探索高并发下的系统架构面貌
  • Android开发者必备:推荐一款助力开发的开源APP
  • Linux权限管理(week1_day5)--技术流ken
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​学习一下,什么是预包装食品?​
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (补充)IDEA项目结构
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (转)c++ std::pair 与 std::make
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .Net 6.0--通用帮助类--FileHelper
  • .Net Core 微服务之Consul(二)-集群搭建
  • .NET8 动态添加定时任务(CRON Expression, Whatever)
  • .net网站发布-允许更新此预编译站点
  • @selector(..)警告提示
  • []AT 指令 收发短信和GPRS上网 SIM508/548
  • [18] Opencv_CUDA应用之 基于颜色的对象检测与跟踪