JSONP实现跨域(9种跨域方案)
jsonp
jsonp是一种JSON的“使用模式“,jsonp实现跨域的原理是,通过script标签向服务器端发送一个get请求,服务端返回一个text/plain格式的文件,文件内容是对一个方法的调用,并回传数据,如下:
callback("hello world!")
我们可以通过在客户端定义一个回调函数来接收数据。在回调函数中客户端就可以拿到服务端返回的数据了。
客户端实现:
function jsonP({url, params}) {return new Promise((resolve, reject) => {window.callback = function(data) {resolve(data) // 将data传给promise的thendocument.body.removeChild(script)}const arrs = []for (let key in params) {arrs.push(`${key}=${params[key]}`)}let script = document.createElement('script')script.src = `${url}?${arrs.join('&')}&cb=callback`document.body.appendChild(script)})}
服务端实现:
let express = require('express')let app = express()
app.listen(3000)
app.get('/say', (req, res) => {let {wd, cb} = req.queryres.end(`${cb}('hello world')`)
})
客户端调用:
jsonP({url: 'http://localhost:3000/say',params: {wd:'hello you'}
}).then((res) => {console.log(res)
})
缺点:
- 只能发送get请求,不支持post put delete
- 不安全,xss攻击,返回的内容可以对网站内容进行篡改
JSONP实现跨域(9种跨域方案)相关推荐
- js中的几种跨域方法
js跨域指的是通过js在不同域之间进行数据传输或通讯,例如ajax通信技术,或者通过js获取页面中iframe的数据.只要有任意一个不同,则协议.域名.端口中有任意一个不同,则彼此成为不同的域. 请注 ...
- JavaScript 九种跨域方式实现原理
前言 前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容. 一.什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心也最基本的安全 ...
- 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- 九种跨域方式实现原理
前言 前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容. 本文完整的源代码请猛戳github 博客 一.什么是跨域? 1.什么是同源策略及其限制内容? 同源策略 ...
- JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...
- JavaScript 九种跨域方式实现原理 1
前言 前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这是本文要探讨的内容. 一.什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定,它是浏览器最核心也最基本的安全 ...
- SSO的几种跨域方案
在此只是记录一下自己在尝试SSO跨域实现的过程中学到的几种跨域方案,不包含任何例子和具体的实现方法. 最近在尝试SSO的跨域,看了好多资料,然后自己记录了一下可以实现的方法: ①跳转所有站点设置coo ...
- 九种跨域方式的实现原理,第一个就超惊艳!| 技术头条
作者 | 浪里行舟 责编 | 胡巍巍 前后端数据交互经常会碰到请求跨域,什么是跨域,以及有哪几种跨域方式,这正是本文要探讨的内容. 什么是跨域? 1.什么是同源策略及其限制内容? 同源策略是一种约定, ...
- Spring Boot 中三种跨域场景总结
文章目录 1.什么是跨域 2.解决方案 2.1 存在的问题 3.SpringSecurity 3.1 方式一 3.2 方式二 4.OAuth2 5.小结 跨域这个问题松哥之前写过文章,但是最近收到小伙 ...
- form表单会跨域_前端跨域So Easy
跨域 本文主要介绍JSONP.CORS两种跨域方式,后台采用Koa模拟,真正的目标是理解整个跨域的流程.至于什么是跨域和浏览器同源策略的问题,请同学们自行百度. JSONP JSONP 其实是一种tr ...
最新文章
- ASP.NET MVC 中将FormCollection与实体间转换方法
- day13 内置函数一
- 4kyu Path Finder #2: shortest path
- HLG2081分苹果
- React Native移动开发实战-4-Android平台的适配
- struts2从一个action跳到另一个action的配置方法
- LeetCode--5.最长回文子串(滑动窗口)
- matlab 高级函数
- HBase之HRegionServer处理put请求
- mysql报错ERROR 1045 (28000)
- 安装rvm的时候提示curl证书的问题..
- 《Unix编程艺术》pdf
- 扩散方程——热传导问题(能量定律+傅里叶热传导定律)+ 拉普拉斯方程 | 偏微分方程(三)
- 关于 Linux中内网安装软件的一些笔记
- 鸿蒙电视如何播放手机上的歌,鸿蒙这么用 荣耀智慧屏联动手机的正确打开方式...
- LoRa亿佰特 E22-400T22S 临时寄存器和无线配置的详细解释
- 国内外各大网络安全论坛、网站(正在补全)
- MNIST数据集下载+idx3-ubyte解析【超详细+上手简单】
- Windows Nacos使用教程(下载、启动、登录)
- DirectX游戏编程入门——前言
热门文章
- 基于MATLAB的车牌识别基本原理及算法讲解
- 功率因数cosφ仪表盘
- IOS版本APP STORE上架流程
- 为NodePad++添加CSS格式化功能
- 考出面试者基本功的 10 个简单编程题
- html5 window.game,releasing html5 games for windows 8
- cadence Allegro17.2关闭start page 界面方法
- vnc远程控制软件配置,vnc远程控制软件怎么配置,教程详解
- 斐讯 http文件服务器,斐讯刷机教程(硬件版本A5)
- getinfo怎么用php,PHP SplObjectStorage getinfo()用法及代码示例