首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是跨域以及几种简单解决方案

什么是跨域? 要明白什么是跨域之前,首先要明白什么是同源策略? 同源策略就是用来限制从一个源加载的文档或脚本与来自另一个源的资源进行交互。那怎样判断是否是同源呢?...如果协议,端口(如果指定了)和主机对于两个页面是相同的,则两个页面具有相同的源,也就是同源。...也就是说,要同时满足以下3个条件,才能叫同源: 协议相同 端口相同 主机相同 举个例子就一目了然了: 我们来看下面的页面是否与 http://store.company.com/dir/index.html...但是,这种方法只能解决主域相同的跨域问题。...('iframe'); iframe.src = 'example.com/b.html'; // 这里让iframe与父页面同源 iframe.onload = function

54010
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    跨域详解 【原创】

    通过修改document.domain来跨子域 浏览器同源策略限制之一是不能通过ajax的方法去请求不同源中的文档。第二个限制是浏览器中不同域的框架之间不能进行js的交互操作。...例如,有一个页面地址是http://www.example.com/a.html,在这个页面里有一个iframe,src是http://example.com/b.html,这个页面与里面的iframe...对象,但该window对象的属性和方法几乎不可用 var doc = win.document;//获取不到iframe的document对象 var name = win.name...但document.domain的设置是有限制的,只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...4.1 在父页面 http://www.example.com/a.html 中设置document.domain iframe id = "iframe" src="http://example.com

    1.4K50

    浏览器同源策略及跨域的解决方法

    当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。 所谓同源是指:域名、协议、端口相同。...浏览器对这两种请求的处理,是不一样的。 简单请求 在请求中需要附加一个额外的 Origin 头部,其中包含请求页面的源信息(协议、域名和端口),以便服务器根据这个头部信息来决定是否给予响应。...但要注意的是,document.domain 的设置是有限制的,我们只能把 document.domain 设置成自身或更高一级的父域,且主域必须相同。...中的任意一个,但是不可以设成 c.a.b.laixiangran.cn ,因为这是当前域的子域,也不可以设成 baidu.com,因为主域已经不相同了。...; location.hash 跨域 location.hash 方式跨域,是子框架具有修改父框架 src 的 hash 值,通过这个属性进行传递数据,且更改 hash 值,页面不会刷新

    1.6K20

    跨域详解

    通过修改document.domain来跨子域 浏览器同源策略限制之一是不能通过ajax的方法去请求不同源中的文档。第二个限制是浏览器中不同域的框架之间不能进行js的交互操作。...例如,有一个页面地址是http://www.example.com/a.html,在这个页面里有一个iframe,src是http://example.com/b.html,这个页面与里面的iframe...对象,但该window对象的属性和方法几乎不可用 var doc = win.document;//获取不到iframe的document对象 var name = win.name...但document.domain的设置是有限制的,只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...4.1 在父页面 http://www.example.com/a.html 中设置document.domain iframe id = "iframe" src="http://example.com

    1.3K70

    再谈沙箱:前端所涉及的沙箱细讲

    沙箱设计的目的是为了让不可信的代码运行在一定的环境中,从而限制这些代码访问隔离区之外的资源。浏览器上JavaScript就是在沙盒中执行,严格控制的环境。沙箱将JavaScript与桌面世界隔离开来。...更严重的是,它切断了JavaScript与Web服务器上所有内容的联系,例如存储用户列表和产品目录的数据库以及运行业务逻辑的服务器端代码。...总而言之:要解析或执行不可信的JS的时候,要隔离被执行代码的执行环境的时候,要对执行代码中可访问对象进行限制的时候如何实现/使用沙箱实现沙箱最方便的模式iframe,同理,也可以使用webWorker。...因为iframe隔离的更彻底。Worker虽然无法读取DOM对象,但是可以读取BOM的 navigator与location对象与XMLHttpRequest对象。...allow-same-origin允许 iframe 内容被视为与包含文档有相同的来源。allow-top-navigation允许 iframe 内容从包含文档导航(加载)内容。

    1.5K10

    什么是跨域?如何解决跨域问题?

    4、document.domain【实现不同window之间的相互访问和操作】 跨域分为两种,一种xhr不能访问不同源的文档,另一种是不同window之间不能进行交互操作;   document.domain...主要是解决第二种情况,且只能适用于主域相同子域不同的情况;   document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。...兼容性:所有浏览器都支持; 优点:  可以实现不同window之间的相互访问和操作; 缺点:  只适用于父子window之间的通信,不能用于xhr;  只能在主域相同且子域不同的情况下使用;...;//可以获取到iframe里的window对象,但该window对象的属性和方法几乎是不可用的 var doc = win.document;//这里获取不到iframe里的document

    73510

    web跨域解决方案

    这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。   ...特别注意两点: 1、如果是协议和端口造成的跨域问题“前台”是无能为力的   2、在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。...但要注意的是,document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...c.a.b.example.com,因为这是 当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。...; var win = iframe.documentWindow;   2、JavaScript打开的弹窗: var win = window.open();   3、当前文档窗口的父窗口: var

    2.8K100

    滴滴前端面试题合集

    ,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:页面和其打开的新窗口的数据传递多窗口之间消息传递页面与嵌套的iframe消息传递上面三个场景的跨域数据传递用法:postMessage...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问...跨域此方案仅限主域相同,子域不同的跨域应用场景。...三个页面,不同域之间利用iframe的location.hash传值,相同域之间直接js访问来通信。...协议端口是80,HTTPS协议端口是443;4、HTTP协议连接很简单,是无状态的;HTTPS协议是具有SSL和HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP更加安全Vue通信1.props

    79800

    如何进行渗透测试XSS跨站攻击检测

    是否同源由URL决定,URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。...3.2.2.1.2. cookie的同源策略 cookie使用不同的源定义方式,一个页面可以为本域和任何父域设置cookie,只要是父域不是公共后缀(public suffix)即可。...源的更改 同源策略认为域和子域属于不同的域,例如 域名1.a.com 与 域名a.com / 域名1.a.com 与 域名2.a.com/ xxx.域名1.a.com 与 域名1.a.com 两两不同源...跨源脚本API访问 Java的APIs中,如 iframe.contentWindow , window.parent, window.open 和 window.opener 允许文档间相互引用。...当两个文档的源不同时,这些引用方式将对 window 和 location 对象的访问添加限制。

    2.7K30

    Web前端学习笔记之前端跨域知识总结

    //可以获取到iframe里的window对象,但该window对象的属性和方法几乎是不可用的 var doc = win.document;//这里获取不到iframe里的document...但要注意的是,document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。  ...0x05 通过jsonp跨域 刚才说的这几种都是双向通信的,即两个iframe,页面与iframe或是页面与页面之间的,下面说几种单项跨域的(一般用来获取数据),因为通过script标签引入的js是不受同源策略的限制的...同样这个方法也可以应用到和iframe的交互来: 比如:我的页面(http://damonare.cn/index.html)中内嵌了一个iframe: iframe id="iframe" src=...这种方法与 document.domain 方法相比,放宽了域名后缀要相同的限制,可以从任意页面获取 string 类型的数据 0x08 后记 其它诸如中间件跨域,服务器代理跨域,Flash URLLoader

    1.1K30

    【Web技术】424- 那些年曾谈起的跨域

    - 选自百度百科 对于JSONP简单的百度了一下,百度给出的解释如上,看完整段话,有一些小的收获,第一script标签具有开放策略,可以使用src的开放性解决其跨域问题。在这里简单的阐述一下个人观点。...但要注意的是,document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...简单的介绍了一下哈希与哈希的用处那么又该如何使用哈希来实现跨域呢?其实很简单,如果index页面要获取远端服务器的数据,动态插入一个iframe,将iframe的 src 属性指向服务端地址。...父页面: iframe src="http://localhost:7000/b.html#key=1&key1=2">iframe> 由于哈希值的改变不会改变网页的网址的,所以服务端可以通过获取到哈希来解析...当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域HTTP请求。

    58310

    一文带你了解跨域的前因后果和解决方案

    什么是跨域 在了解跨域之前,我们必须要了解一下同源策略。 跨域问题其实就是浏览器的同源策略造成的。 同源策略 同源策略限制了从同一个源加载的文档或脚本如何与另一个源的资源进行交互。...为什么会产生跨域 下表给出了与 URL wmq.com/dir/page.ht… 的源进行对比的示例: URL 是否跨域 原因 wmq.com/dir/page.ht… 同源 完全相同 wmq.com/...window属性之一,它可用于解决以下方面的问题: 页面和其打开的新窗口的数据传递 多窗口之间消息传递 页面与嵌套的iframe消息传递 上面三个场景的跨域数据传递 用法:postMessage(data...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问...1)父窗口:(domain.com/a.html) iframe id="iframe" src="http://child.domain.com/b.html">iframe>

    35510

    前端基础知识整理汇总(上)

    charset charset 表示通过src属性指定的代码的字符集 defer defer 表示脚本可以延迟到文档完全被解析和显示之后再执行(仅适用于外部脚本)。...src="example.js"> 2. async: 异步脚本 加载和渲染后续文档元素的过程将和脚本的加载与执行并行进行(异步)。...meta META标签是HTML标记HEAD区的一个关键标签,它提供的信息虽然用户不可见,但却是文档的最基本的元信息。...无论什么时候在函数中访问一个变量时,就会从作用域链中搜索具有相同名字的变量,一般来讲,当函数执行完毕,局部活动对象就会被销毁,内存中仅保存全部作用域的活动对象。但是,闭包不同。...同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 所谓同源是指"协议+域名+端口"三者相同。

    1.3K10

    浏览器同源策略及规避方式

    同源,何为同源,同源的意思就是协议、端口、域名三者均需要相同才能构成同源。例如 这个域名来说,https://为协议,www.oecom.cn为域名,默认的端口为80端口。...而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域 获取ifreamDOM节点 如果两个网页不同源,就无法拿到对方的DOM。...典型的例子是iframe窗口和window.open方法打开的窗口,它们与父窗口无法通信。...父窗口先打开一个子窗口,载入一个不同源的网页,该网页将信息写入window.name属性:window.name = data。 接着,子窗口跳回一个与主窗口同域的网址。...window.postMessage 在HTML5中,为了解决跨域通信问题,提供了一个全新的API:即跨文档通信API。

    1.5K30

    一文带你了解跨域的前因后果和解决方案

    什么是跨域 在了解跨域之前,我们必须要了解一下同源策略。 跨域问题其实就是浏览器的同源策略造成的。 同源策略 同源策略限制了从同一个源加载的文档或脚本如何与另一个源的资源进行交互。...为什么会产生跨域 下表给出了与 URL wmq.com/dir/page.ht… 的源进行对比的示例: URL 是否跨域 原因 wmq.com/dir/page.ht… 同源 完全相同 wmq.com/...window属性之一,它可用于解决以下方面的问题: 页面和其打开的新窗口的数据传递 多窗口之间消息传递 页面与嵌套的iframe消息传递 上面三个场景的跨域数据传递 用法:postMessage(data...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问...1)父窗口:(domain.com/a.html) iframe id="iframe" src="http://child.domain.com/b.html">iframe>

    38010

    九种实用的前端跨域处理方案(转载非原创)

    同源策略:如果两个页面的协议,域名,端口都相同,则两个页面具有相同的源。 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源。...这是为了防止这些新增的请求,对传统的没有 CORS 支持的服务器形成压力,给服务器一个提前拒绝的机会,这样可以防止服务器收到大量DELETE和PUT请求,这些传统的表单不可能跨域发出的请求 举例 自动发出一个...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问...实现原理 a想要与b跨域相互通信,通过中间页c来实现。 三个页面,不同域之间利用iframe的location.hash传值,相同域之间直接js访问来通信。...页面和其打开的新窗口的数据传递 b. 多窗口之间消息传递 c. 页面与嵌套的iframe消息传递 d.

    1.4K00

    前端和前端联调的各种姿势,了解一下

    其实也是存在的,比如另一个前端写了一个庞大的模块(如游戏、在线ide、可视化编辑页面等需要沙盒环境的情况),此时引进来需要使用iframe来使用。...不同的人负责的东西同时展示在页面上交互,那么两个前端开发的过程中必然有联调的过程 背景:父页面index.html里面有一个iframe,iframe的src为子页面(另一个html的链接),下文都是基于此情况下进行...而且需要iframe的onload触发后才能使用postmessage iframe的哈希变化通信 低门槛的一种手段,可以跨域 父页面 const iframe = document.querySelector...如果是父页面,那么创建一个iframe,src是本页面href加上query参数。...它具有不同的全局作用域——只有一部分普通winodow下的方法。

    1.5K10

    跨域分析以及通解

    所谓同源(即在同一个域)就是两个页面具有相同的协议(protocol)、主机(host)和端口号(port)。 我们可以这么理解一个url是由:协议、域名、端口 三部分组成。...则是不同协议,A与C不同域名,A与D不同端口这些都是跨域。...一级域名相同,二级域名不同的情况下,可以设置document.domain相同,就可以共享cookie 以iframe和window.open方法打开的窗口为例,有三种方法可以跨域: url后#片段识别符携带传递参数...实现思路:通过Nginx配置一个代理服务器域名与domain1相同,端口不同)做跳板机,反向代理访问domain2接口,并且可以顺便修改cookie中domain信息,方便当前域cookie写入,实现跨域访问...document.domain+iframe适合主域名相同,子域名不同的跨域请求。postMessage、websocket都是HTML5新特性,兼容性不是很好,只适用于主流浏览器和IE10+。

    1.1K30
    领券