文档章节

区分同源与非同源

 沉非
发布于 2017/09/03 19:54
字数 645
阅读 12
收藏 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
海淀
程序员
私信 提问
浏览器同源策略及 Ajax 跨域解决方案

因为在开发过程中会经常遇到因为浏览器同源策略而导致的跨域问题,而多数开发者对浏览器同源策略和跨域问题并没有很清晰的认识,所以打算在这篇文章中说下浏览器同源策略和我们最经常会遇到的...

淘淘笙悦
07/13
0
0
WebView跨源攻击分析

一同源策略 同源策略是浏览器最重要的一种安全机制,由Netscape于1995年最先提出,现在的主流浏览器都遵循这种策略[1]。同源一般指协议,域名,端口都相同,但IE浏览器会忽略对端口的判断。R...

球球
2016/06/17
43
0
同源策略和跨域问题

原文来自:http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html 浏览器安全的基石是"同源政策"(same-origin policy)。很多开发者都知道这一点,但了解得不全面。 本文详细介绍...

bug_killer
2017/12/14
0
0
出现跨域问题的原因及其解决方法

出现跨域问题的原因: 同源策略 同源策略 三同 协议相同 域名相同 端口相同 同源策略目的 保证用户信息安全,防止恶意网站窃取数据。同源策略是必须的,否则cookie可以共享。 同源策略的限制...

Husbin
01/11
0
0
jsonp跨域获取数据实现百度搜索

本菜鸡最近在写某个页面请求数据时,报了如下的错误。 Failed to load https://...: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0......

行无忌
06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

windows上类似dnsmasq的软件Dual DHCP DNS Server

官网地址:http://dhcp-dns-server.sourceforge.net/官网定向的下载地址:https://sourceforge.net/projects/dhcp-dns-server/files/ 设置参考地址:http://blog.51cto.com/zhukeqiang/18264......

xueyuse0012
今天
1
0
LinkedHashMap源码解析

前言 HashMap中的元素时无序的,也就是说遍历HashMap的时候,顺序和放入的顺序是不一样的。 如果需要有序的Map,就可以采用LinkedHashMap. LinkedHashMap通过维护一个包含所有元素的双向链表,...

grace_233
今天
3
0
初识flask

文档 0.10.1版本 http://www.pythondoc.com/flask/index.html 1.0.2版本 https://dormousehole.readthedocs.io/en/latest/ 安装flask $ pip3 install flaskCollecting flask Downloading......

yimingkeji
昨天
4
0
Akka系统《sixteen》译

Actor是一个封装状态(state)和行为(behavior)的对象,它们只通过交换消息通信(放入收件人邮箱的邮件)。从某种意义上说,Actor是最严格的面向对象编程形式,但它更适合将他们视为人:在与Act...

woshixin
昨天
3
0
技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部