JSONP解决跨域

JSONP(JSON with Padding)是继绝跨域问题的古老方案。同源策略中,对标签的跨域请求限制较小。JSONP利用了这一点。

步骤:

  • 准备一个回调函数
  • 服务器响应时返回的是执行该函数的js代码,将需要返回的数据作为该函数的参数

跨域情况下发起AJAX请求:

前端服务在5000端口:

html
复制代码
<button type="" onclick="request()">get</button> <script> function callback(data) { console.log(data); } function request() { fetch('http://localhost:8000/data').then((res) => { console.log(res); }) } </script>

后端服务在8000端口:

js
复制代码
const http = require("http"); const server = http.createServer(function(req,res){ }); server.on('request',function(req,res){ const url = req.url; const data = [{ name:'shao', age:18}, { name:'clean', age:20} ]; if(url === '/'){ res.end('hello world'); } if(url === '/data'){ //返回一个函数,函数的参数是需要传递的数据 res.end(`callback(${JSON.stringify(data)})`); } }) server.listen(8000,function(){ console.log("服务器运行在8000端口") })

会报跨域的错误。

使用JSONP方式解决:

html
复制代码
<button type="" onclick="request()">get</button> <script> function callback(data) { console.log(data); } function request() { const script = document.createElement('script'); script.src = 'http://localhost:8000/data'; document.body.appendChild(script); } </script>

成功解决了之前的跨域报错,获取到数据

image-20221222144237536

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
Clean
内容推荐
Day 9🧭行动:学习高级的数据容器--字典(dict)🤓体会:字典是可变,key‑value,key 必须不可变。开始上强度喽~🧑‍💻代码:dict1 = {"王林":670, "李慕婉":608, "许立国":580, "韩立":688}#增加dict1["王喆"] = 630print(dict1)#修改dict1["王喆"] = 620print(dict1)#删除wz = dic
1
Day 10🧭行动:对所学习的数据容器进行实战综合运用🤓体会:做了一个简易教务管理系统,其中使用了马上要学习的函数相关知识,不使用的话可能会导致代码过于冗长,降低可读性。🧑‍💻代码:初始化:外层字典 key=学生姓名,value=成绩字典students = {}def subject_stat(subject_name, score_name_list):"""统计科目:最高分、最低分、
1
Day 11🧭行动:开始学习所有编程语言中最重要的部分--核心语法--函数🤓体会:在学习过C语言后这部分还是简单的,可能对初学者来说难以理解形参,实参以及参数的作用范围。重新理解了一下返回值的概念,之前一直不清楚return的作用🧑‍💻代码:def circle_area(r):area = 3.14 * r ** 2return areaarea = circle_area(10)pri
1
Day 13✅ 今天做了:Vue表单搜索, 搜索栏布局⏰ 明天计划:继续学前端
0
插播一个题外话🥰:作为一位做题家,记笔记几乎是刻在学习行为中的。之前一直都是用纸质版,包括刚开始学习Python前几天。后来在一个帖子看到有人说,现在这个时代还在用纸笔写学习笔记太落后了😱,加上我一直有在网上写笔记的打算,(起初是想发在CSDN上的,但是我发现了鱼皮学长的这个网站),所以今天快速整理了这些天的学习笔记(还是比较粗糙的),如果碰巧对你有用,那就两全其美了(感谢鱼皮学长以及其他默默
0
下载 APP