无数次看到:Origin null is not allowed by Access-Control-Allow-Origin , 网络没有让你绝望,但是或许会让你蛋疼,因为你找了半天没看到一个比较实用的解决方案,亦或者水平不够,别人写的东西累赘没看懂,抑或是。。。
网上看到了一篇文章——跨域资源共享的10中方式,已经放在自己的家里了O(∩_∩)O~
跨域也是平时项目中比较让人头疼的一个玩意儿,上文只是简要地提出了有哪些跨域方式,这里呢,将向大家详细说明,各种使用频率比较高的跨域方式。
什么是跨域:
A cross-domain solution (CDS) is a means of information assurance that provides the ability to manually or automatically access or transfer between two or more differing security domains.
上面是从wiki上引用过来的。意思是:解决两个安全域之间的信息传递,这个就叫做CDS——跨域解决方案。首先解释下怎么样的两个域之间的数据传输需要跨越。
What [什么是跨域]
JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。但在安全限制的同时也给注入iframe或是ajax应用上带来了不少麻烦。这里把涉及到跨域的一些问题简单地整理一下:
首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可以看下表:
http://www.a.com/a.js http://www.a.com/b.js |
同一域名下 | 允许 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夹 | 允许 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
同一域名,不同端口 | 不允许 |
http://www.a.com/a.js https://www.a.com/b.js |
同一域名,不同协议 | 不允许 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名对应ip | 不允许 |
http://www.a.com/a.js http://script.a.com/b.js |
主域相同,子域不同 | 不允许 |
http://www.a.com/a.js http://a.com/b.js |
同一域名,不同二级域名(同上) | 不允许(cookie这种情况下也不允许访问) |
http://www.cnblogs.com/a.js http://www.a.com/b.js |
不同域名 | 不允许 |
same-origin policy [同源策略]
在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义。同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和操作另外一个域的绝大部分属性和方法。
那么什么叫相同域,什么叫不同的域呢?当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.example.org),那么我们就可以认为它们是相同的域。比如http://www.example.org/和http://www.example.org/sub/是同域,而http://www.example.org, https://www.example.org, http://www.example.org:8080, http://sub.example.org中的任何两个都将构成跨域。同源策略还应该对一些特殊情况做处理,比如限制file协议下脚本的访问权限。本地的html文件在浏览器中是通过file协议打开的,如果脚本能通过file协议访问到硬盘上其它任意文件,就会出现安全隐患,目前IE8还有这样的隐患。
受到同源策略的影响,跨域资源共享就会受到制约。但是随着人们的实践和浏览器的进步,目前在跨域请求的技巧上,有很多宝贵经验的沉淀和积累。这里我把跨域资源共享分成两种,一种是单向的数据请求,还有一种是双向的消息通信。
How [如何跨域]
你可以看看这个提纲,跨域十法,也可以等等,我会很详细很具体地告诉你如何跨域~
O(∩_∩)O哈哈~
下一节将给大家细说JSONP方法跨域。
相关推荐
JavaScript跨域通信是Web开发中的一个重要概念,它涉及到浏览器的安全策略和Ajax请求的限制。由于浏览器的同源策略,一个域名下的JavaScript无法直接访问或操作不同域名下的资源,这就需要我们采用特定的方法来实现...
JavaScript跨域和Ajax跨域是Web开发中常见的问题,尤其在进行前后端分离或API调用时,由于浏览器的同源策略限制,不同域名、协议或端口的资源请求会被阻止,这就是所谓的“跨域”。本文将深入探讨JavaScript和Ajax...
JavaScript跨域访问解决方案 在Web开发中,JavaScript的同源策略是浏览器为了保障用户安全而实施的一项重要机制。它限制了脚本只能访问与当前页面具有相同协议(如http或https)、主机名和端口号的资源。然而,在...
JavaScript跨域方案是Web开发中的一个重要主题,尤其是在构建现代Web应用程序时。由于浏览器的安全策略,JavaScript在不同域名之间默认不允许进行通信,这就是所谓的“同源策略”。然而,开发者经常需要在多个域之间...
JavaScript跨域调试是Web开发中的一个关键环节,因为浏览器的安全策略限制了JavaScript在不同源之间的交互。"Javascript Debug Toolkit 1.0.2"是一款专为解决这一问题而设计的强大工具,它允许开发者在跨域环境中...
JavaScript跨域访问是Web开发中的常见挑战,由于浏览器的安全策略——同源策略,JavaScript通常只能访问与当前页面同源(协议、域名、端口都相同)的资源。然而,为了实现不同源之间的通信,开发者可以采取多种方法...
实现javascript跨域,可以在不同域名双向通信,内含demo,支持IE6+、火狐,谷歌等浏览器 配套文章:http://blog.csdn.net/mycwq/article/details/16344171
### JavaScript跨域总结与解决办法 #### 跨域的基本概念 跨域问题源自于浏览器的安全策略之一——**同源策略**。同源策略是浏览器为了防止恶意网站通过脚本访问其他网站的数据而采取的一种安全措施。它规定了一个...
JavaScript跨域是Web开发中一个常见的挑战,尤其是在进行Ajax请求或者使用API时。由于浏览器的安全策略,不同源的HTTP请求会被禁止,这就是所谓的"同源策略"。然而,随着Web应用的发展,跨域需求日益增加,Node.js...
本文将深入探讨一个具体的JavaScript跨域请求包装函数,并通过示例来展示其实际应用。 #### 一、理解跨域请求 跨域请求是指在一个域名下的页面发起对另一个域名下的资源的请求。浏览器为了保护用户隐私和数据安全...
JavaScript跨域是Web开发中一个常见的挑战,主要是由于浏览器的安全策略——同源策略(Same-origin policy)限制。同源策略要求网页只能访问与其自身URL协议、域名和端口完全相同的资源,以防止恶意脚本窃取数据。...
JavaScript跨域访问是Web开发中常见的一种挑战,由于浏览器的同源策略限制,一个域上的脚本不能直接获取或操作另一个域上的资源。为了解决这个问题,开发者通常采用以下三种主要方法:1. 基于iframe实现跨域2. JSONP...
【JavaScript跨域调用基于JSON的RESTful API】 在Web开发中,JavaScript是客户端脚本语言,主要用于增强用户界面和实现动态交互。然而,由于浏览器的同源策略(Same Origin Policy),JavaScript在处理AJAX...
JavaScript跨域总结 在Web开发中,由于浏览器的同源策略限制,JavaScript代码通常只能访问与自身页面协议、域名和端口完全相同的资源。这种安全机制是为了防止恶意脚本通过跨站点请求获取用户敏感信息。然而,随着...
### JavaScript父子页面跨域通信详解 #### 一、引言 在现代Web开发中,跨域通信是一个常见的问题。由于浏览器的安全策略——同源策略(Same-origin policy)的存在,JavaScript在处理不同源之间的数据交互时会受到...
JavaScript跨域问题主要源于浏览器的同源策略,这是一种安全机制,限制了JavaScript脚本只能访问与当前页面同协议、同域名、同端口的资源。当尝试从一个域名下的网页去请求另一个域名的数据时,例如通过Ajax进行...
在使用ArcGIS API for JavaScript开发Web应用程序时,经常会遇到跨域问题。这是因为浏览器的安全策略限制了JavaScript从一个源(域名、协议或端口)请求另一个源的数据。ArcGIS API for JavaScript是一个强大的工具...
JavaScript跨域处理是Web开发中的一个关键概念,由于浏览器的安全策略,JavaScript通常被限制在同一源策略下运行,这意味着脚本只能访问与加载它的页面来自同一域名的资源。然而,在实际应用中,为了实现数据交互、...