在开发测试中,难免会在不同域下进行跨域操作,出于安全性考虑,浏览器中的同源策略阻止从一个域上加载的脚本获取或者操作

另一个域下的文档属性,这时需要进行跨域的方式进行解决,如:使用jsonp ,iframe等

1.jsonp的原理

jsonp,即json+padding,动态创建script标签,利用script标签的src属性可以获取任何域下的js脚本,通过这个特性(也可以说漏洞),服务器端不在返货json格式,而是返回一段调用

某个函数的js代码,在src中进行了调用,这样实现了跨域.

2.应用场景

在网上经常看到别人的blog中在用jsonp模仿360和百度进行跨域拿数据,这两者就是典型的跨域请求案例.又比如在近期开发中前端部分用的是vue.js进行开发,所以跟后台进行交

互的时候就可以通过跨域进行通信,正好用的jsonp(折腾 一番之后,最终没有用这种方式,后面会说到),另外,qq空间大部分用的都是

jsonp.

3.优缺点

jsonp优点:

完美解决在测试或者开发中获取不同域下的数据,用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。简单来说数据的格式没有发生

很大变化

jsonp缺点:

这里主要讲jsonp的缺点,也就是我上面说的没有用这个的原因

1.jsonp只支持get请求而不支持post请求,也即是说如果想传给后台一个json格式的数据,此时问题就来了,浏览器会报一个http状态码

415错误,告诉你请求格式不正确,这让我很蛋

疼(在登录注册中需要给后台传一大串数据),如果都用参数的形式拼接在url后面的话不太现实,后台取值也会显得繁琐,

2.在登录模块中需要用到session来判断当前用户的登录状态,这时候由于是跨域的原因,前后台的取到的session是不一样的,那么就不

能就行session来判断.

3.由于jsonp存在安全性问题(不知qq空间的跨域是怎么解决的,还是另有高招?)

后来考虑到上面的一系列问题,采用的是后台进行设置允许跨域请求(但还是存在缺陷的,实质上还是跨域,如上面说的session问题)

.Header set Access-Control-Allow-Origin *

为了防止XSS攻击我们的服务器, 我们可以限制域,比如

Access-Control-Allow-Origin: http://blog.csdn.net

jsonp协议原理深度解析

前言 今天在开发联调的过程中,需要跨域的获取数据,因为使用的jquery,当然使用dataType:'jsonp'就能够很easy的解决了.但是因为当时后端没有支持jsonp来访问,后来他在实现这个功 ...

js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)

最近做了一个项目,需要用子域名调用主域名下的一个现有的功能,于是想到了用jsonp来解决,在我们平常的项目中不乏有这种需求的朋友,于是记录下来以便以后查阅同时也希望能帮到大家,需要了解的朋友可以参考下 ...

JSONP的原理

JSONP的原理 JSONP的最基本的原理是:动态添加一个

JSONP的原理与实现(基于jQuery)

为什么会有JSONP?因为我们使用AJAX,使用AJAX可能就会遇到跨域的需求,如何解决呢,对,就是JSONP. 这里注意下JSON和JSONP不是一类,虽然他们只是一个字母只差,但是实际差别很大.这 ...

jsonp实现原理

jquery 封装在 ajax方法 里面的jsonp jsonp跨域的原理       1:使用script 标签发送请求,这个标签支持跨域访问       2:在script 标签里面给服务器端传递 ...

从原理到场景 系统讲解 PHP 缓存技术

第1章课程介绍 此为PHP相关缓存技术的课堂,有哪些主流的缓存技术可以被使用? 第1章 课程介绍 1-1课程介绍1-2布置缓存的目的1-3合理使用缓存1-4哪些环节适合用缓存 第2章 文件类缓存 2- ...

jsonp详细原理之一

/*script标签是不存在跨域请求的,类似的还有img,background:url,link 你可以想象一下,平时的这些标签都是可以直接引入外部资源的,所以是不存在跨域问题的*/ function ...

跨域方案JSONP与CORS的各自优缺点以及应用场景

转自 https://www.zhihu.com/question/41992168/answer/217903179 首先明确:JSONP与CORS的使用目的相同,并且都需要服务端和客户端同时支持, ...

ajax 工作原理以及其优缺点

1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML ...

随机推荐

Ubuntu上Grafana 监控 Docker的技巧

导读 Grafana 是一个有着丰富指标的开源控制面板.在可视化大规模测量数据的时候是非常有用的.根据不同的指标数据,它提供了一个强大.优雅的来创建.分享和浏览数据的方式. 它提供了丰富多样.灵活的图 ...

Socket实现仿QQ聊天(可部署于广域网)附源码(2)-服务器搭建

1.前言 这是本系列的第二篇文章,第一篇文章得到了很多朋友们的支持,在这里表示非常的感谢.对于这一系列文章需要补充的是这只是一篇入门级别的Socket通信文章,对于专业人员来说完全可以跳过.本文只介绍 ...

前端js模版 预编译工具Tmod js使用入门

1. 安装node js , 2. 用 npm install -g tmodjs  命令安装tmod 3.了解参数配置 4.运行测试例子->命令窗切换到当前文档位置 --->执行tomd ...

Xcode真机调试中"There was an internal API error"错误解决方法

xcode7更新之后使用真机调试,在IOS8的一台iphone6也没问题.IOS9.2的一台iphone6s也没问题.但是在IOS7.0的一台iPhone4s上面在最后安装的时候居然安装失败,提示 T ...

Java基础知识强化之IO流笔记81:NIO之 DatagramChannel

1. Java NIO中的DatagramChannel是一个能收发UDP包的通道.因为UDP是无连接的网络协议,所以不能像其它通道那样读取和写入.它发送和接收的是数据包. 2. DatagramCh ...

javascript widget ui mvc

MVC只是javascript的一个UI模式 JavaScript UI----UI, Template, MVC(View)----Backbone, Angular RequireJS------ ...

(转)关于font-size:100%

重设浏览器默认字体大小 h1,h2,h3,h4,h5,h6 {font-size:100%;font-weight:normal;} 假如你设置body{font-size:12px;} 但h1是不会 ...

2018-2019-1 20189203《Linux内核原理与分析》第四周作业

第一部分 课本学习 内核版本号:Linux内核自2013年12月起,就以A.B.C.D的方式命名.A和B变得无关紧要,C是内核的真实版本.每一个版本的变化都会带来新的特性,如内部API的变化等,改动的 ...

洛谷 P3956 棋盘(BFS)

传送门:Problem P3956 https://www.cnblogs.com/violet-acmer/p/9827010.html 题解: BFS 相关变量解释: color[maxn][ma ...

traff.sh

#!/bin/bash #网络监控 while [ "1" ] do eth=$1 RXpre=$(cat /proc/net/dev | grep $eth | tr : &qu ...

跨越原理优缺点_jsonp的原理,应用场景,优缺点相关推荐

  1. 聚类方法:DBSCAN算法研究(1)--DBSCAN原理、流程、参数设置、优缺点以及算法

    DBSCAN聚类算法三部分: 1.        DBSCAN原理.流程.参数设置.优缺点以及算法: http://blog.csdn.net/zhouxianen1987/article/detai ...

  2. Zabbix之2023 Zabbix6.4最新高级特性、优缺点及其实现原理总结

    目录 Zabbix高级特性1. 自动发现 Zabbix高级特性2. 分布式监控 Zabbix高级特性3. 高级报警 Zabbix高级特性4. 可视化 Zabbix高级特性5. API Zabbix高级 ...

  3. Linux运维系列总结-Linux系统启动过程、WEB工作原理、DHCP工作原理、DNS解析原理、NFS网络文件系统、FTP文件传输协议、PXE+KICKSTART自动安装系统

    Linux运维系列总结-Linux系统启动过程.WEB工作原理.DHCP工作原理.DNS解析原理.NFS网络文件系统.FTP文件传输协议.PXE+KICKSTART自动安装系统 1.Linux系统的启 ...

  4. AbstractQueuedSynchronizer 原理分析 - Condition 实现原理

    1. 简介 Condition是一个接口,AbstractQueuedSynchronizer 中的ConditionObject内部类实现了这个接口.Condition声明了一组等待/通知的方法,这 ...

  5. 第十四课 k8s源码学习和二次开发原理篇-调度器原理

    第十四课 k8s源码学习和二次开发原理篇-调度器原理 tags: k8s 源码学习 categories: 源码学习 二次开发 文章目录 第十四课 k8s源码学习和二次开发原理篇-调度器原理 第一节 ...

  6. 【3D视觉原理】2-3D传感器原理

    文章目录 内容概要 3D光学测量方法概述 被动测距 单目立体视觉(精度不高) 聚焦法 离焦法 双目立体视觉(精准) 多目立体视觉(更精准) 主动测距 结构光法 光点法 光条法 光面法 飞行时间法(To ...

  7. 计算机组原理ppt,计算机组原理1.ppt

    计算机组原理1 答案: ADD R0,R1, 指令格式和内容: 指令中给出操作码和 R0.R1的编号: 埂恨吠唆美舌攒兰锄番觉岂恳诱同括宪响侧拙捕跺荤施休董参岳虑哼黔德计算机组原理1计算机组原理1 指 ...

  8. K8S 快速入门(四)Pod原理、核心组件工作原理

    一.Pod核心原理 1. Pod是什么? Pod的特点:封装docker容器的容器 1.有自己的IP地址 2.有自己的hostname Pod实际上也相当于是一个独立的容器(虚拟机器),而这个pod容 ...

  9. 管理计算机中木桶原理,2014国考面试备考:管理学原理的应用-木桶原理篇

    2014国考面试备考:管理学原理的应用-木桶原理篇由国家公务员考试网整理发布.更多关于2014国考面试备考,管理学原理的应用,木桶原理篇,以及公务员考试备考信息.请关注国家公务员考试网/内蒙古人事考试 ...

最新文章

  1. 中美德工业互联网路径比较
  2. ASP.NET2.0中用ICallbackEventHandler实现客户端与服务器端异步交互
  3. Java Web应用程序:Oozie及其使用方式
  4. 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference
  5. 十分钟教会你原生JS压缩图片,极其精简版
  6. STM32工作笔记0008---TFT显示屏和LCD显示屏的区别
  7. Python中tkinter.filedialog
  8. 口嫌体直聂远,撩人于无形茅子俊,《皓镧传》吴谨言求问该选谁?
  9. 二台S3928P堆叠的配置文档,大家可以参考
  10. css中的expression
  11. python selenium 打开新窗口
  12. 【混凝土强度预测】基于matlab BP神经网络混凝土强度预测【含Matlab源码 695期】
  13. MySQL与Oracle的用户权限操作
  14. 用缠论做量化(买卖点/品种机会/策略应用全解读)
  15. 塔防游戏制作教程(三)
  16. 广东未来科技AI立体数码相机:因细节而闪耀
  17. 公司搬家的教训,提几个注意事项
  18. 3DMAX 8 角色建模2 身体
  19. 基础向:「财务对账」的秘密都在这篇 3000 字的文章里
  20. 仿酷狗音乐播放器开发日志十八——换肤功能的实现二:改变控件和窗体透明度(附挂件类源码)...

热门文章

  1. Ubuntu五笔输入终极解决方案(Rime)
  2. C#,图像二值化(22)——局部阈值的伯恩森算法(Bernsen Thresholding)及源程序
  3. Windows版微信加密存储图片的解密工具GUI程序
  4. box-shadow的使用
  5. 游戏素材怎么找?1 分钟教你获取一套漂亮的游戏素材!
  6. 世界国家及中国各省市级地图ArcGIS MXD/SHP/QGIS/JSON/SQL数据文件【免费下载】
  7. 高效下载论文----谷歌SCI-HUB插件
  8. Hibernate从0开始,入门到放弃,一文上手
  9. Web Service漏洞挖掘
  10. 【深度学习】实验5布置:滴滴出行-交通场景目标检测