JSON 和 JSONP

浏览器安全模型规定,XMLHttpRequest、框架(frame)等只能在一个域中通信。从安全角度考虑,这个规定很合理;但是,也确实给分布式(面向服务、混搭等等本周提到的概念)Web开发带来了麻烦。如果尝试从不同的域请求数据,会出现安全错误。如果能控制数据驻留的远程服务器并且每个请求都前往同一域,就可以避免这些安全错误。

源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。这个浏览器策略很旧,从 Netscape Navigator 2.0 版本开始就存在。

克服该限制的一个相对简单的方法是让 Web 页面向它源自的 Web 服务器请求数据,并且让 Web 服务器像代理一样将请求转发给真正的第三方服务器。尽管该技术获得了普遍使用,但它是不可伸缩的。另一种方式是使用框架要素在当前 Web 页面中创建新区域,并且使用 GET 请求获取任何第三方资源。不过,获取资源后,框架中的内容会受到同源策略的限制。

克服该限制更理想方法是在 Web 页面中插入动态脚本元素,该页面源指向其他域中的服务 URL 并且在自身脚本中获取数据。脚本加载时它开始执行。该方法是可行的,因为同源策略不阻止动态脚本插入,并且将脚本看作是从提供 Web 页面的域上加载的。但如果该脚本尝试从另一个域上加载文档,就不会成功。幸运的是,通过添加 JavaScript Object Notation (JSON) 可以改进该技术。

JSONP(JSON with Padding):打包在函数调用中的 JSON 数据。JSONP的原理很简单,但需要服务器端给予相应配合。大致来说,JSONP的实现思路就是在客户端编程时作好使用JSON数据的准备,然后再通过圆括号将这些数据括起来以创建一条有效的JavaScript语句(可能是一次有效的函数调用).介绍参见:http://www.cnblogs.com/AllengWang/archive/2008/02/03/1062843.html

参考资料:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Ubuntu & Fedora Mono 2.8 安装脚本

    在Ubuntu和Fedora这两大系列的Linux发行版上,不像suse的Linux发行版,安装Mono 一般都是需要从源代码开始编译,这里想大家推荐一个 Ub...

    张善友
  • 使用VS2010的Database 项目模板统一管理数据库对象

    Visual Studio 2010 有一个数据库项目模板:Visual Studio Database Project(以下简称VSDP),VS 2003/2...

    张善友
  • 当调用GetAuthorizationGroups() 的错误-“试图访问卸载的应用程序域“(Exception from HRESULT: 0x80131014)解决方案

    针对 Windows® 平台,Microsoft 提供了三个主要目录平台:Active Directory® 域服务、每台 Windows 计算机上的本地安全帐...

    张善友
  • Puppeteer 入门与实战

    Puppeteer 是 Chrome开发团队2017年发布的一个 Node.js包,提供了一组用来操纵Chrome的API,通俗来说就是一个Headless C...

    2020labs小助手
  • 我与SDN的缘分:一名初学者的学习之路与心得

    SDN,Software Defined Network,是对传统网络架构的一次革新。经过短短三四个月的学习和实践,我本着授人以渔的理念,辅以我的一些理解,将我...

    SDNLAB
  • ajax异步提交数据到数据库

    很多时候我们提交数据到服务器端数据库都是用form表单,这样子是最普通最简单提交数据的方法,你填写完表单后,post提交到后台文件.php,处理完后返回...

    benny
  • SDN是把双刃剑吗?

    网络当中接入的设备和云计算的兴起,对传统网络的性能提出了更高的要求,这也是为什么在经过深思熟虑之后,传统网络正在积极向虚拟化网络功能和控制器过渡,电信公司正在部...

    SDNLAB
  • linux基础命令介绍十五:推陈出新

    本文介绍ip、ss、journalctl和firewall-cmd,它们旨在代替linux中原有的一些命令或服务。

    用户5030870
  • Cloud for Customer Restriction and Exclusion Product Lists

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    Jerry Wang
  • 周雍恺:面向金融的软件定义网络安全探索

    首先我们此次是一个云数据中心的专场,因此我会首先介绍一下银联云平台与云网络的建设情况,其次是对于SDN安全的研究思路,之后对几个研究点做一下报告。 首先看一下银...

    SDNLAB

扫码关注云+社区

领取腾讯云代金券