美文网首页饥人谷技术博客
同源策略、跨域、jsonp

同源策略、跨域、jsonp

作者: 块垒 | 来源:发表于2016-09-22 17:12 被阅读55次

什么是同源策略

同源策略是浏览器的一个功能,就是协议、域名、端口号都相同。对于不同源的客户端脚本再一般情况下只能引用二不可以读写。

什么是跨域?跨域有几种实现形式

处于安全方面考虑,不允许跨域调用其他页面的对象。简单的理解就是因为JS同源策略的限制,a.com域名下的JS无法操作b.com域名下的对象资源。
跨域的形式:

  1. 降域
  2. JSONP
  3. CORS
  4. postMessage
  5. 其他hack

降域是什么

在iframe形势下将两个不同源的URL变成同源状态
通过给当前页面和iframe页面同时加上document.domain=当前页面进行降域处理.
弊端:

  1. 只能再iframe形式有用
  2. 降域只能设置为父域名
  3. 安全问题

jsonp 的原理是什么

jsonp可以看作是动态添加script。

  1. 在html中声明一个方法,给目标路由发送一个callback=方法的参数
  2. 返回路由中JS内容,再调用这个方法

弊端:

  1. 只能在GET请求中使用
  2. 可能被注入(callback=function(){}),要靠外界字符串过滤
    callback = callback.replace('/\(/g','')
    callback = callback.replace('/\)/g','')
  1. 为了安全性,需要检验身份

CORS是什么

CORS是HTTP2的方法。它允许浏览器向跨域服务器发出XMLHttpRequest请求,从而客服AJAX只能同源使用的限制,简单来说就是在头信息之中增加一个Origin字段

演示

没有解决跨域问题:

跨域问题

JSONP解决:

  var script = document.createElement('script');
  window.xxx = function(data){//给XXX绑定一个函数方法
    alert(data)
  }
  script.src = '//b.com:3000/test/ajax.php?callback=xxx';//传一个callback=xxx的参数给后台
  document.body.appendChild(script)
JSONP

CORS解决:
对于简单请求来说,只要在后台文件中添加一句话就可以解决


CORS

相关文章

  • 前端基础(问答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/gavzettx.html