首页
学习
活动
专区
圈层
工具
发布

同源策略和跨域解决方法

第一部分:同源策略:same-origin policy 1.同源策略的由来: 1995年,同源策略由Netscape(曾经的浏览器霸主,拒绝微软收购请求,被IE给整垮。...请求无效(请求发送后,浏览器不会进行响应) 第二部分:跨域解决方法 1.设置document.domain来跨子域:(适用于cookie、iframe) 比如http://a.test.com和http...://b.test.com; 如果设置了document.domain='test.com';那么两者之间可以共享cookie(即一级域名相同,二级域名不同,可以设置document.domain来共享...如:父窗口是http://a.test.com,iframe是http://test.com;当设置了document.domain="test.com"时,就能进行跨域了。...主要原理:浏览器发现Ajax跨域请求,就会自动添加一些头部信息;对于非简单请求,还会多出一次附加请求;但是这些用户都察觉不到。

2.3K70

AJAX 与跨域通信(二):跨域解决方案

开始之前,要先清楚一件事: 跨域不一定是浏览器限制了发起跨站请求,而也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。...当然,也可以返回 *,表示接受任何域的 AJAX 请求(* 是通配的意思)。...AJAX 跨域请求。...,但是呢,我们注意到这两个域的主域是相同的,只是子域不同而已,所以我们可以用 document.domain 的方法实现跨域,具体来说,就是重新设置两个页面的 document.domain 为一个相同的值...,但是不可以设成 c.a.b.test.com(下一级子域),因为这是当前域的子域,也不可以设成 baidu.com,因为主域已经不相同了,这里的主域必须始终保持为 test.com 不变。

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

    js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。...2、通过修改document.domain来跨子域 浏览器都有一个同源策略,其限制之一就是第一种方法中我们说的不能通过ajax的方法去请求不同源中的文档。...c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。...不过如果你想在http://www.example.com/a.html 页面中通过ajax直接请求http://example.com/b.html 页面,即使你设置了相同的document.domain...也还是不行的,所以修改document.domain的方法只适用于不同子域的框架间的交互。

    2.2K10

    js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。...2、通过修改document.domain来跨子域 浏览器都有一个同源策略,其限制之一就是第一种方法中我们说的不能通过ajax的方法去请求不同源中的文档。...c.a.b.example.com,因为这是当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。...不过如果你想在http://www.example.com/a.html 页面中通过ajax直接请求http://example.com/b.html 页面,即使你设置了相同的document.domain...也还是不行的,所以修改document.domain的方法只适用于不同子域的框架间的交互。

    2.6K80

    跨域详解 【原创】

    通过修改document.domain来跨子域 4.1 在父页面 http://www.example.com/a.html 中设置document.domain 4.2 在子页面 http:/...跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了访问跨域资源时浏览器与服务器的通信方式。...),相对路径换成其他域的绝对路径(跨域访问的接口地址) 服务器端对于CORS的支持通过设置 Access-Control-Allow-Origin ,如果浏览器检测到相应的设置,则允许Ajax跨域访问...通过修改document.domain来跨子域 浏览器同源策略限制之一是不能通过ajax的方法去请求不同源中的文档。第二个限制是浏览器中不同域的框架之间不能进行js的交互操作。...="text/javascript"> document.domain = 'example.com';//在iframe载入这个页面也设置document.domain,使之与主页面的document.domain

    1.7K50

    跨域详解

    跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了访问跨域资源时浏览器与服务器的通信方式。...),相对路径换成其他域的绝对路径(跨域访问的接口地址) 服务器端对于CORS的支持通过设置 Access-Control-Allow-Origin ,如果浏览器检测到相应的设置,则允许Ajax跨域访问...通过修改document.domain来跨子域 浏览器同源策略限制之一是不能通过ajax的方法去请求不同源中的文档。第二个限制是浏览器中不同域的框架之间不能进行js的交互操作。...但document.domain的设置是有限制的,只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...="text/javascript"> document.domain = 'example.com';//在iframe载入这个页面也设置document.domain,使之与主页面的document.domain

    1.5K70

    【博客同步】跨域详解

    跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了访问跨域资源时浏览器与服务器的通信方式。...),相对路径换成其他域的绝对路径(跨域访问的接口地址) 服务器端对于CORS的支持通过设置 Access-Control-Allow-Origin ,如果浏览器检测到相应的设置,则允许Ajax跨域访问...通过修改document.domain来跨子域 浏览器同源策略限制之一是不能通过ajax的方法去请求不同源中的文档。第二个限制是浏览器中不同域的框架之间不能进行js的交互操作。...但document.domain的设置是有限制的,只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...="text/javascricsxiaoyao.compt"> document.domain = 'example.com';//在iframe载入这个页面也设置document.domain

    44210

    详解JavaScript跨域问题

    跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。...服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。...通过修改document.domain来跨子域 浏览器都有一个同源策略,其限制之一就是第一种方法中我们说的不能通过ajax的方法去请求不同源中的文档。...但要注意的是,document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。.../在iframe载入这个页面也设置document.domain,使之与主页面的document.domain相同 修改document.domain的方法只适用于不同子域的框架间的交互

    1.3K100

    什么是跨域及怎么解决跨域问题?

    ,所以浏览器才会阻止非同源操作dom 浏览器的这个限制虽然不能保证完全安全,但是会增加攻击的困难性 虽然安全机制挺好,可以抵御坏人入侵,但有时我们自己需要跨域请求接口数据或者操作自己的dom,也被浏览器阻止了...只不过是可以跨域了 这里针对ajax与jsonp的异同再做一些补充说明: 1、ajax和jsonp这两种技术在调用方式上”看起来”很像,目的也一样,都是请求一个url,然后把服务器返回的数据进行处理,因此...ajax的核心是通过XmlHttpRequest获取非本页内容,而jsonp的核心则是动态添加 2.后台配置解决跨域 要说前端解决跨域用jsonp最好,但我更喜欢通过配置后台设置 同样,因为我用的java...下面再列举一些解决跨域方法,这些跨域方法有局限性也有特殊场景用途,应该了解一下 3.通过修改document.domain来跨子域 此方法有介绍价值,因为关系到操作dom方面的跨域 上述方法都只能解决请求跨域...或者子iframe做了事件,父在跨域的情况下无法获取子的事件,但通过消息传递就可以间接获取到事件。

    14.4K13

    web跨域解决方案

    又比如你登录了OSC,同时浏览了恶意网站,如果没有同源限制,该恶意 网站就可以构造AJAX请求频繁在OSC发广告帖. 跨域的情况分为以下几种: ?...它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。它为Web服务器定义了一种方式,允许网页从不同的域访问其资源.   ...但要注意的是,document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...c.a.b.example.com,因为这是 当前域的子域,也不可以设成baidu.com,因为主域已经不相同了。...一旦取到B页面中的jQuery对象,就可以直接发ajax请求了,这种类似“代理”方式可以解决主子域的跨域问题。

    3.2K100

    同源策略与跨域请求

    (2) 无法读写非同源网页的 DOM (3) 无法向非同源地址发送 AJAX请求(可以发送,但浏览器会拒绝响应而报错) 虽然所有的页面都有浏览器的同源策略的保护,但我们仍然有一些办法绕过浏览器的同源策略限制...在实际开发中也可以不设置为同域,而设置为 about:blank,因为这个页面中包含了同域的引用,而且因为是空白页面,可以提高页面加载速度。 ? 成功跨域拿到了数据: ?...只有服务器白名单中的请求才能被正确的响应。 在本届 DEFCON 大会上也提到了这种跨域方式的不安全性。...假设 A 站要跨域访问B站,首先会检查 B 站下的 crossdomain.xml 文件,如果没有,则访问不成功。如果有,且里面设置了允许 A 站点访问,那么 AB 站点就可以跨域通信了。...正确的做法应该是明确指定本域内的文件能被哪些域访问。

    1.4K10

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

    用户浏览了恶意页面 http://evil.com,执行了页面中的恶意 AJAX 请求代码。...因此,有了浏览器同源策略,我们才能更安全的上网。 跨域的解决方法 从上面我们了解到了浏览器同源策略的作用,也正是有了跨域限制,才使我们能安全的上网。...document.domain 跨域 对于主域名相同,而子域名不同的情况,可以使用 document.domain 来跨域。这种方式非常适用于 iframe 跨域的情况。...但要注意的是,document.domain 的设置是有限制的,我们只能把 document.domain 设置成自身或更高一级的父域,且主域必须相同。...中的任意一个,但是不可以设成 c.a.b.laixiangran.cn ,因为这是当前域的子域,也不可以设成 baidu.com,因为主域已经不相同了。

    1.8K20

    ajax的面试题_java中框架面试题

    大家好,又见面了,我是你们的朋友全栈君。 1:什么是ajax?ajax作用是什么? 异步的javascript和xml AJAX 是一种用于创建快速动态网页的技术。...所以不论在安全性还是数据量级 post是最好的选择) 5:什么情况造成跨域? 同源策略限制 不同源会造成跨域。以下任意一种情况不同,都是不同源。...} 2:CORS:跨域资源共享 原理:服务器设置Access-Control-Allow-OriginHTTP响应头之后,浏览器将会允许跨域请求 限制:浏览器需要支持HTML5,可以支持POST,PUT...: http://a.com //只允许所有域名访问 3:设置 document.domain 原理:相同主域名不同子域名下的页面,可以设置document.domain让它们同域 限制:同域document...三: 4开头状态码 4xx(请求错误) 这些状态代码表示请求可能出错,妨碍了服务器的处理 1:400 (错误请求) 服务器不理解请求的语法。 2:403 (禁止) 服务器拒绝请求。

    1.2K10

    什么是跨域?一文弄懂跨域的全部解决方法

    每个网页的DOM只能由其自己的脚本访问,不能被其他源的脚本操作。 无法向不同源地址发起AJAX请求。这限制了网页与不同源服务器之间的数据交互。...这些限制确保了Web应用的安全性,防止恶意网站访问其他网站的敏感数据。但同时也给开发跨域Web应用带来了挑战,需要采取相应的跨域解决方案。...三、跨域解决方案 3.1 设置document.domain 我们可以通过设置document.domain解决无法读取非同源网页的 Cookie问题。...因为浏览器是通过document.domain属性来检查两个页面是否同源,因此只要通过设置相同的document.domain,两个页面就可以共享Cookie(此方案仅限主域相同,子域不同的跨域应用场景...如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

    13K21

    JS 跨域问题常见的五种解决方式

    现在设置为跨域:将ajax请求部分的url域设为 demoff.sinaapp.com 即对换注释部分,就会产生跨域问题 ?...好那就进行解决吧   第一: 使用 跨域资源共享(CORS) CORS(Cross-Origin Resource Sharing)跨域资源共享,定义了必须在访问跨域资源时,浏览器与服务器应该如何沟通。...但要注意的是,document.domain的设置是有限制的,我们只能把document.domain设置成自身或更高一级的父域,且主域必须相同。...可取得子窗口的 window 对象 } 2.在页面 http://example.com/b.html 中也设置document.domain: document.domain的方法,让我们能通过js完全控制这个iframe,这样我们就可以让iframe去发送ajax请求,然后收到的数据我们也可以获得了。

    2.2K00

    跨域解决方案整理笔记

    2). jQuery 封装 JSONP 注意: jQuery封装的$.ajax中有一个dataType属性,如果将该属性设置成 dataType:"jsonp",就能实现JSONP跨域了...可行方案思考 万事总有优缺点,不要太过纠结 1.考虑到JSONP 的一系列问题,也可以建议采用 后台进行设置允许跨域请求 Header set Access-Control-Allow-Origin...对于开发者来说,CORS 通信与同源的 AJAX 通信没有差别,代码完全一样。 浏览器一旦发现 AJAX 请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。...只要服务器实现了 CORS 接口,就可以跨源通信 当然如果设置成下面这样,所有的跨域都可以实现了,但这样毕竟太不安全 "Access-Control-Allow-Origin:*";//允许任何域向我们的服务器发送请求...设置 document.domain方案 推荐参考:document.domain解决跨域问题,详细讲解 原理:相同主域名下不同子域页面,通过设置 document.domain 让他们同域 【

    1.1K30
    领券