跨域的几种实现方式
时间:2022-06-23
本文章向大家介绍跨域的几种实现方式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
首先,跨域就是浏览器为了保护你的安全,禁止一个网站向和它不同域名的网站发送ajax请求。比如如果浏览器当前处于http://localhost:3001
网站下,那么它无法发送请求到http://localhost:3002
。
下面我们在localhost:3001
访问3002
中的api。
JSONP实现跨域
JSONP是一个比较投机的方式,它利用的是浏览器对script
标签的跨域没有限制这一特性来实现发送请求。
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script>
// 这里是api的回调
function handleResult(resp) {
alert(resp.name);
}
</script>
<!-- 这里访问不同域下的api -->
<script type="text/javascript" src="http://localhost:3002/controller"></script>
</body>
</html>
而API也不能返回单纯的json了,因为json是纯数据,script
标签加载之后并不会产生任何动作。API应该返回包装了回调函数调用的数据,这个函数的参数就是实际JSON数据。如下:
handleResult({
"name": "app2"
})
这样,当浏览器加载了localhost:3002/controller
,它会把响应数据当作js脚本来处理,然后就是调用回调函数handleResult
,并把实际的响应传回去。下面是调用成功的一个例子:
然而,这用到一个api就要一个script标签,这让人无法忍受,Jquery封装了jsonp的调用:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$.ajax({
type : "get",
async: false,
url : "http://localhost:3002/controller",
dataType: "jsonp",
jsonp:"callback",
jsonpCallback: "jsonhandle",
success : function(data) {
alert("name:" + data.name);
}
});
});
</script>
</body>
</html>
这里的jsonp
代表请求中参数的名字,jsonCallback
代表回调函数的名字,这会在url中组合成localhost:3002?${jsonp}=${jsonpCallback}
的形式
Jsonp实现跨域的一个缺点就是,它无法发布post
请求,只能发布get
请求。
原文地址:https://www.cnblogs.com/lilpig/p/16406365.html
- 数据库进程间通信解决方案IPC
- 苹果后端的Oracle数据库
- C#基础知识回顾--C#遍历enum类型、获取enum项个数
- 用香蕉也能玩电脑游戏—Tensorflow对象检测接口的简单应用
- 通过图片定位给一张图片添加多个链接
- Struts Interceptor Example
- 微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化
- WPF备忘录(3)如何从 Datagrid 中获得单元格的内容与 使用值转换器进行绑定数据的转换IValueConverter
- WPF备忘录(2)WPF获取和设置鼠标位置与progressbar的使用方法
- WPF文字修饰——上、中、下划线与基线
- 微信公众平台数据接口正式对所有认证公众号开放
- 参考基因组没有,经费也没那么多,怎么办?
- .Net下SQLite的DBHelp
- 数据库进程间通信解决方案之MQ
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法