美文网首页
同源策略、跨域、jsonp

同源策略、跨域、jsonp

作者: StarLikeRain | 来源:发表于2016-09-11 21:28 被阅读116次

提问

1、什么是同源策略
同源策略是浏览器的一个属性,指的是protocol协议hostname域名port端口号完全相同的网站才可以互相引用和读取资源。
2、什么是跨域?跨域有几种实现形式
跨域有多种实现方式,

  • 1降域

①比如把child.a.com和a.com和xxx.child.a.com都可以降域为a.com
②实现的话需要在两个需要进行跨域的网站script都写document.domain = 'a.com'进行降域
③其中ajax不受降域的影响,得用iframe在页面中引用另一个页面的这种方式
④域名只能往下设置,不能下去了再上来。比如xxx.child.a.com只能往下变成chlid.a.com或者再往下变成a.com。但是如果到了a.com就不能再回去到child.a.com、xxx.child.a.com
⑤降域的话有安全性的问题,如果一个子域名被攻击,多个被降域的域名都会被连带。

  • 2 jsonp(JSON width padding)

①jsonp简单来说就是动态加载script
②比如a.com中通过script创建一个script然后通过appendChild()到页面上"<script src="//b.com/main.js?callback = xxx"></script>"
③注意callback = xxx,还有在a.com的页面上要写window.xxx = function(){};的方法。b.com/main.js生成xxx(data),返回到当前页面会执行xxx(data)的函数,这个就叫jsonp。
④data的参数是b.com中拿到的,因为如果写json格式(其实完全不用写json的格式)就会成xxx({'a':'1'})这种格式的,所以叫jsonp(json width padding)
⑤缺点:
如果a.com可以访问b.com,那么完全可以让c.com也访问b.com,解决方法有要么用正则过滤掉不应该出现的字符串,要么约定好一套数据,比如cookies来互相匹配
不能用post只能get

  • 3 cors(cross-origin resource sharing跨域资源共享)
    CORS在hppt秦秋附加一个头,来指定那些服务器来的跨域请求是被允许的,CORS有web服务器发出


    比如这就是CORS
  • post message(html5的功能)
    分享的参考

3、jsonp 的原理是什么
首先json是一种数据格式,而jsonp是一种数据的调用方式。
这个协议允许用户传递一个callback参数给服务器端,然后服务器端会更具这个callback所附着的参数来响应数据,服务器端会按照这个callback作为函数名来包裹住json数据,这样客户端就返回了一个名为callback所对应名字的一个方法了。

演示

本地搭建服务器,演示同源策略

  1. 本地搭建服务器(如果使用 SAE 可创建不同的代码版本,这样可通过1.xxx.sinapp.com和2.xxx.sinapp.com 访问了)
  1. 修改 本地host,通过不同域名访问本地服务器。比如访问http://a.com/index.html, http://b.com/ajax.php,本质是
  2. 在 index.html 里使用 ajax 接口访问 http://b.com/ajax.php 里的数据。
  3. 查看输出报错
首先配置好host 在index页面写好如上代码放入body即可 main.js如上配置 data就这么简单的写一下 在浏览器输入a.com打开页面无法获取data的数据,因为被同源策略禁止了

用jsonp解决突破同源策略限制

这里演示的都使用了jrg-vip8目录下的server
首页的代码这么写 controller里面写方法 router里面写好方法的指向 这是a.com会出来的效果啦,用了jsonp达到

↓↓↓↓↓↓再是cross-origin resource sharing跨域资源共享↓↓↓↓↓↓↓↓

达成效果 弄一个名为data的文本文件 test.js下app.use设置响应头 首页用ajax获取b.com下的data

相关文章

  • 前端基础(问答23)

    keywords: 同源策略、跨域、jsonp。 什么是同源策略(same origin policy) 同源:协...

  • 跨域

    主要内容: 同源策略、跨域实现形式(JSONP、CORS、降域、postMessage) 同源策略 (Same o...

  • 做demo和学习过程当中遇到的一些问题,收集的博文

    轻松搞定JSONP跨域请求--->关键字: 跨域, 同源策略, JSONP原理 git拉取远程分支到本地 git ...

  • jsonp

    jsonp的跨域原理解析 背景: 由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp就是为了解...

  • Jsonp 跨域原理

    Jsonp 跨域原理。(摘选) 浏览器的同源策略把跨域请求都禁止了,但是页面中的 标签是例外,不受同源策略限...

  • 什么是跨域

    被同源策略限制的都叫做跨域,域名,端口,协议一只就要同源策略 如果跨域 1、jsonp 2、nginx反向代理 3...

  • 同源策略与跨域

    跨域就是违背了同源策略解决跨域的方法有:jsonp,cors和服务器代理

  • 常见跨域解决方案

    跨域 JSONP 使用 标签不受同源策略影响的特性,作为Ajax传输技术称为JSONP。 使用JSONP时,需要服...

  • Jsonp的实现原理

    1. Jsonp Jsonp: 主要是用来获取跨域的请求,由于同源策略的限制,我们不能获取跨域的资源 2. Jso...

  • Ajax跨域 —— Jsonp

    同源策略 同源/同域即域名、协议、端口号相同 JSONP(JSON with Padding) 是一种跨域请求方式...

网友评论

      本文标题:同源策略、跨域、jsonp

      本文链接:https://www.haomeiwen.com/subject/dlnuettx.html