文档章节

区分同源与非同源

 沉非
发布于 2017/09/03 19:54
字数 645
阅读 70
收藏 0

行业解决方案、产品招募中!想赚钱就来传!>>>

JSONP和AJAX相同,都是客户端向服务器端发送请求:1、给服务器端传递内容2、从服务器端获取数据 的方式

AJAX属于同源策略

JSONP属于非同源策略(跨域请求) -> 实现跨域请求的方式有很多种,只不过JSONP是最常用的

区分同源和非同源:

当前页面的地址   &&  数据请求的接口地址

    1)协议  2)域名或者IP 3)端口号

    以上三部分完全相同属于同源策略,就是用AJAX技术请求数据,如果有一个不同就属于非同源策略,一般使用JSONP技术请求数据

JSONP的原理:JSONP请求一定需要对方的服务器做支持才可以

在script的世界中,没有同源跨域这一说,只要你给我src属性中的地址是一个合法的地址,script都可以把对应的内容请求回来,JSONP就是利用了script的这个原理
    1、首先把需要请求数据的那个跨域的API数据接口的地址赋值给script的src属性中

    2、把当前页面中的某一个函数名当做参数值传递给需要跨域请求数据的服务器(url问好传参:callback=fn)

    3、服务器接收到请求后,需要进行特殊的处理,把你传递进来的函数名和它需要给你数据拼接成一个字符串, 例如:我们传递进去的函数名是fn,它准备好的数据是"fn([{'name':'xxx'}])"

    4、最后服务器把准备的数据通过HTTP协议返回给我们客户端,客户端发现其实就是让我们的fn执行,而且还给fn传递了一堆的数据,那些数据就是我们想要的

jquery的ajax和JSONP的调用

    ajax:

    $.ajax({

        url:"",

        type:"",

        dataType:"json",

        data:null,

        async:true,

        timeout: 1000,  //设置超时时间,一般都设置3000ms

        cache:false, //设定get请求的时候不走缓存数据,原理就是在url后面加一个缓存数,默认值是true

        success:function(data){},

        error:function(data){}

    })

jsonp:都是GET和异步请求的,不存在其他的请求方式和同步请求,而且jquery会默认会给JSONP的请求清除缓存

$.ajax({

        url:"",

        dataType:"jsonp",

        timeout: 1000,  //设置超时时间,一般都设置3000ms

       jsonpCallback:"fn" //自定义传递给服务器的函数名,而不是jquery自动生成的

        jsonp:"cb"  //吧传递函数名的那个形参callback变为cb

    })

    

 

 

 

粉丝 1
博文 32
码字总数 24934
作品 0
海淀
程序员
私信 提问
加载中
请先登录后再评论。
同步,异步,阻塞,非阻塞的Java例子

定义:任务A,任务B 同步:任务A和任务B之间有关联,例如任务B中途要给任务A一个数字,那么任务A或许需要等待任务B生产这个数,任务A需要等待任务B的这个动作叫做同步。 异步:事件A和事件B...

JoshuaShaw
2016/03/30
2.9K
2
LET'S DJ:web.py无缝迁移到django

DO: 前提是必须要配置好django使用jinja2模版,保持与老项目模版引擎一致。 Django通用视图最基础的类是View,其他如TemplateView、RedirectView等都继承自它,具体用法参见:Django 通用视...

cwalet
2016/04/29
283
0
Babel指南 - 基本环境搭建

ECMAScript的现状 ECMAScript,本身是一个脚本语言的设计规范,基于此规范,有许多为人熟知的语言,如JavaScript、ActionScript等。而时至几年前,随着Node.js的出现,以及HTML5带来的诸多新...

曾建凯
2016/05/02
3K
6
iOS开发之深复制和浅复制

非盈利无广告开发者专用网址导航:www.dev666.com 1、概述 对象拷贝有两种方式:浅复制和深复制。顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深复制是直接拷贝整个对象...

feng_blog
2016/02/24
2K
2
javaweb中ajax跨域访问实例

AJAX跨域解决方法 跨域,简单地理解就是因为浏览器基于安全的同源策略限制不同域名和协议之间的互相访问。 而AJAX的跨域请求,其实浏览器并没有限制不同域的网络请求,只是浏览器会基于请求返...

hello菜bird
2016/01/13
1.4K
2

没有更多内容

加载失败,请刷新页面

加载更多

开源FPGA单板iCESugar

随着产业的发展,近年来FPGA越来越得到市场的重视,5G、矿机、人工智能、图像识别、risc-v、通信等众多领域均可见到FPGA的身影,目前比较知名的FPGA厂商有xilinx、altera、lattice等,其中x...

whoisliang
8分钟前
0
0
合并记录帮助文档

合并记录步骤用于将两个不同来源的数据合并,这两个来源的数据分别为旧数据和新数据;该步骤将旧数据和新数据按照指定的关键字匹配、比较、合并,并显示差异信息。接下来就详细介绍一下该步骤...

osc_slnrw1du
8分钟前
0
0
Spark之RDD转换算子(transformation)大全

前面已经给大家讲过RDD原理,今天就给大家说说RDD的转换算子有哪些,以便大家理解。 对于转换操作,RDD的所有转换都不会直接计算结果,仅记录作用于RDD上的操作,当遇到动作算子(Action)时...

osc_3nr2bq5w
10分钟前
0
0
自定义常量数据帮助文档

自定义常量数据步骤主要用于增加自定义字段和行集数据到流中,可增加多个字段并为每个字段赋予行集的值。步骤配置信息如图1所示。 图1 自定义常量数据步骤配置信息 下文详细解释各控件的含义...

osc_r9wwwi0j
10分钟前
0
0
Linux安装配置ftp(Ceonts 7)

1、安装vsftpd yum -y install vsftpd (我这里已经安装好了,只要不报错即安装成功) 安装完成后可以在/etc/vsftpd目录下看到vsftpd.conf 文件,这是vsftp的配置文件。 2、 添加一个ftp用户...

osc_tko37abm
11分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部