分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

跨域问题-jsonp

发布时间:2023-09-06 02:13责任编辑:傅花花关键词:jsjson跨域

前端
同源策略并不会拦截静态资源请求,那么就将接口伪装成资源,然后后端配合返回一个前端预定义的方法调用,将返回值放入调用该函数的形参即可

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Title</title> ???<script> ???????//前端预定义 ???????function getName(rep){ ???????????document.write(rep.name) ???????????console.log(rep) ???????} ???</script></head><body> ???<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> ???<script src="http://localhost:8082?callback=getName"></script></body></html>

后端
后端以node为例,其他语言大同小异

var http = require("http");const url = require("url");http.createServer(function (request, response) { ???let params = url.parse(request.url,true); ???response.end(params.query.callback + `(${JSON.stringify({name:"abc"})})`);}).listen(8082);

效果




补充
当然了,如果你觉得麻烦,你可以用jq的jsonp或者其他封装ajax支持jsonp的插件,效果一样

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Title</title> ???<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> ???<script> ???????let url=‘http://localhost:8082?callback=getName‘; ???????$.ajax({ ???????????url: url, ???????????type: "get", ???????????dataType: "jsonp", ???????????jsonpCallback: "getName", ???????????success: function (rep) { ???????????????document.write(rep.name) ???????????????console.log(rep) ???????????} ???????}) ???</script></head><body></body></html>




跨域问题-jsonp

原文地址:https://www.cnblogs.com/dshvv/p/9580036.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved