1. 什么是跨域?
  2. 为什么不能跨域?
  3. 跨域的解决方案都有哪些(解决方法/适用场景/get还是post)?
 一、什么是跨域?
      只要协议、域名、端口有任何一个不同,就是跨域。
 
       

二、为什么不能跨域?

浏览器有一个同源策略,用来保护用户的安全

     如果没有这个策略的话,a网站就可以操作b网站的页面,这样将会导致b网站的页面发生混乱,甚至信息被获取,包括服务器端发来的session。

     具体详情请查看: http://www.cnblogs.com/alvinwei1024/p/4626054.html

三、跨域的解决方案

     1、JSONP          

解决方法

0)浏览器是可以引入不同域下的JS文件,利用这个特性,来实现跨域。

1)直接在a.com页面,添加一个script标签,src属性为b网站的页面url,

并且传入一个callback参数。

<script>
function dosomething(jsonData){
}
</script>
<script src="http://www.b.com/handlerData.php?
callback=dosomething"></script>

2)b网站的handlerData.php,实际做的操作就是:生成一段可执行的

JS代码,调用你传入的dosomething函数。

详细介绍:http://www.cnblogs.com/2050/p/3191744.html

应用场景  常用的解决方案
请求方式 get :它本质上是下载一个资源文件。

     

     2、document.domain

应用场景

必须满足两个条件

1)页面中嵌入firame框架。

2)当前页面和iframe中的页面,主域、协议、端口必须完全一致。

解决方法

比如页面地址是http://a.baidu.com/,嵌入的iframe是 http://b.baidu.com/

分别设置页面和iframe的document.domain为: baidu.com,就可以解决问题。

     3、使用H5中的window.postMessage

解决方法

window.postMessage(message,targetOrigin)  方法是html5新引进的特性,可以使用它来向其它

的window对象发送消息,无论这个window对象是属于同源或不同源,目前IE8+、FireFox、Chrome、

Opera等浏览器都已经支持window.postMessage方法。

应用场景

1)页面和其打开的新窗口的数据传递

2).多窗口之间消息传递

3).页面与嵌套的iframe消息传递

详细介绍:http://www.cnblogs.com/dolphinX/p/3464056.html

     

     4、CORS方案

解决方法

CORS定义一种跨域访问的机制,可以让AJAX实现跨域访问。CORS 允许一个域上的网络应用

向另一个域提交跨域 AJAX 请求。实现此功能非常简单,只需由服务器发送一个响应标头即可。

header("Access-Control-Allow-Origin", "*");   
---“*”号表示允许任何域向我们的服务端提交请求
应用场景 跨域post提交数据
请求方式 post
参考链接

详细介绍请查看:

http://www.cnblogs.com/Darren_code/p/cors.html

http://www.ruanyifeng.com/blog/2016/04/cors.html

     

【Javascript】搞定JS面试——跨域问题的更多相关文章

  1. 搞定所有的跨域请求问题 jsonp CORS

    网上各种跨域教程,各种实践,各种问答,除了简单的 jsonp 以外,很多说 CORS 的都是行不通的,老是缺那么一两个关键的配置.本文只想解决问题,所有的代码经过亲自实践.   本文解决跨域中的 ge ...

  2. 【JavaScript】--重点解析之跨域请求

    JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON是用字符串来表示Javascript对象,例如可以在django中发送一个JSON格式 ...

  3. js执行跨域请求

    //js执行跨域请求 var _script = document.createElement('script'); _script.type = "text/javascript" ...

  4. js调用跨域

    web aapi 初体验 解决js调用跨域问题   跨域界定 常见跨域: 同IP不同端口: http:IP:8001/api/user     http:IP:8002/api/user 不同IP不同 ...

  5. js&jquery跨域详解jsonp,jquery并发大量请求丢失回调bug

    URL  说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a.js http:/ ...

  6. JS JSOP跨域请求实例详解

    JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题.这篇文章主要介绍了JS JSOP跨域请求实例详解的相关资料,需要的朋友可以参考下 ...

  7. react-native debug js remotely跨域问题

    react-native debug js remotely跨域问题 我们在安卓真机上调试react-native时,启用debug js remotely的时候,会出现跨域问题.这个时候我们只需要一 ...

  8. js解决跨域问题

    JavaScript中的常见解决跨域的方法 1. 通过jsonp跨域 1.)原生实现: 2. document.domain + iframe跨域 此方案仅限主域相同,子域不同的跨域应用场景. 1.) ...

  9. JS Ajax跨域访问

    js ajax跨域访问报"No 'Access-Control-Allow-Origin' header is present on the requested resource 如果请求的 ...

随机推荐

  1. Bootstrap入门(三十)JS插件7:警告框

    Bootstrap入门(三十)JS插件7:警告框 通过这个插件可以为警告信息添加点击以及消失的功能. 当使用一个.close按钮,它必须是第一个子元素.alert-dismissible,并没有文字内 ...

  2. 从[NOI2008志愿者招募]浅谈线性规划在网络流构图上的巧用

    首先来看一下题..http://www.lydsy.com/JudgeOnline/problem.php?id=1061 1061: [Noi2008]志愿者招募 Description 申奥成功后 ...

  3. Introduce: IEPI.BIATranscribe 图像表格拓写工具

    应用场合 数据表格是学术.文案工作中常用的表述形式.我们经常需要从第三方获取所需的数据.有些时候这些数据并非以可直接编辑的形式(如电子表格文档),而是以打印件或者扫描件的形式提供.假如需要对数据进行进 ...

  4. Ceph QoS 初探(下)

    作者:吴香伟 发表于 2017/01/24 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 存储QoS是个可以做很大也可以做很小的特性.SolidFire认为将Q ...

  5. 源码(03) -- java.util.Collection<E>

     java.util.Collection<E> 源码分析(JDK1.7) -------------------------------------------------------- ...

  6. iOS Storyboard适配问题

      通用的Storyboard 通用的stroyboard文件是通向自适应布局光明大道的第一步.在一个storyboard文件中适配iPad和iPhone的布局在iOS8中已不再是梦想.我们不必再为不 ...

  7. 使用 flow.ci 快速发布你的项目文档

    软件研发的协作过程中,文档是必不可少的一环,有需求文档.接口文档.使用文档等等.当开始写文档时,首先会遇到两个问题: team members 之间如何协作? 文档 OK 后如何分发,去哪里看?如何更 ...

  8. MongoDB学习总结(四) —— 索引的基本用法

    说到索引,大家肯定都在关系型数据库或多或少接触过,它的主要目的是加速查询的速度.MongoDB作为一种数据库,当然也提供了索引的操作. 我们先插入1万条测试数据. 首先,我们先来看看不加索引查找nam ...

  9. 【Java深入研究】2、JVM类加载机制

    一.先看看编写出的代码的执行过程: 二.研究类加载机制的意义 从上图可以看出,类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行. 研究类 ...

  10. [MongoDB] - Window7下安装及BSON基本介绍

    MongoDB是一种NOSQL(Not Only SQL)类型的文档型数据库.NoSQL数据库与传统的关系型数据库相比,它具有操作简单.完全免费.源码公开.随时下载等特点,并可以用于各种商业目的.Mo ...