当前位置:网站首页 > 编程语言 > 正文

跨域请求是什么(常用的跨域请求方案有哪些)



由于浏览器同源策略,凡是发送请求url的协议、域名、端口三者之间任意一与当前页面地址不同即为跨域。具体可以查看下表:
在这里插入图片描述
在这里插入图片描述

1、JSONP

1) JSONP原理

2) JSONP和AJAX对比

JSONP和AJAX相同,都是客户端向服务器端发送请求,从服务器端获取数据的方式。但AJAX属于同源策略,JSONP属于非同源策略(跨域请求)

3) JSONP优缺点

JSONP优点是简单兼容性好,可用于解决主流浏览器的跨域数据访问的问题。缺点是仅支持get方法具有局限性,不安全可能会遭受XSS攻击。

4) 代码演示

 

2、CORS

1) CORS 原理

CORS 需要浏览器和后端同时支持。IE 8 和 9 需要通过 XDomainRequest 来实现。
浏览器会自动进行 CORS 通信,实现 CORS 通信的关键是后端。只要后端实现了 CORS,就实现了跨域。
服务端设置 Access-Control-Allow-Origin 就可以开启 CORS。 该属性表示哪些域名可以访问资源,如果设置通配符则表示所有网站都可以访问资源。

2) 代码演示

 

3、postMessage

1) postMessage 原理

postMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:

 

postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。

2) 代码演示

 

4、websocket

1) Websocket 原理

Websocket是HTML5的一个持久化的协议,它实现了浏览器与服务器的全双工通信,同时也是跨域的一种解决方案。WebSocket和HTTP都是应用层协议,都基于 TCP 协议。但是 WebSocket 是一种双向通信协议,在建立连接之后,WebSocket 的 server 与 client 都能主动向对方发送或接收数据。同时,WebSocket 在建立连接时需要借助 HTTP 协议,连接建立好了之后 client 与 server 之间的双向通信就与 HTTP 无关了。

2) 代码演示

 

5、Node中间件代理

1) Node中间件代理原理

同源策略是浏览器需要遵循的标准,而如果是服务器向服务器请求就无需遵循同源策略。

2) 代码演示

 

6、nginx反向代理

1) nginx反向代理原理

2) 代码演示

 

7、window.name+iframe

1) window.name+iframe原理

window.name属性的独特之处:name值在不同的页面(甚至不同域名)加载后依旧存在,并且可以支持非常长的 name 值(2MB),通过iframe的src属性由外域转向本地域,跨域数据即由iframe的window.name从外域传递到本地域。这个就巧妙地绕过了浏览器的跨域访问限制,但同时它又是安全操作。

2) 代码演示

 

8、location.hash + iframe

1) location.hash + iframe原理

a.html欲与c.html跨域相互通信,通过中间页b.html来实现。 三个页面,不同域之间利用iframe的location.hash传值,相同域之间直接js访问来通信。

2) 代码演示

 
 
 

9、document.domain + iframe

1) document.domain + iframe原理

两个页面都通过js强制设置document.domain为基础主域,就实现了同域。

2) 代码演示

 
 

10、xdr

1) xdr原理

这是IE8、IE9提供的一种跨域解决方案,功能较弱只支持get跟post请求,而且对于协议不同的跨域是无能为力的,比如在http协议下发送https请求。

2) 代码演示

 

11、proxy代理

1) proxy代理原理

2) 代码演示

 
 
 
 到此这篇跨域请求是什么(常用的跨域请求方案有哪些)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
                            

版权声明


相关文章:

  • 来自远方合集txt百度云(来自远方合集txt百度云谨言百度网盘)2024-12-07 18:27:07
  • 跨域是什么烟(跨域是什么意思 怎么解决)2024-12-07 18:27:07
  • 网易云怎么获取位置权限(网易云音乐获取位置信息怎么设置)2024-12-07 18:27:07
  • 动态库(动态库存表)2024-12-07 18:27:07
  • ht22.vip域名查询(ht60.vip域名查询)2024-12-07 18:27:07
  • 拆包发货是什么意思啊(什么叫拆包发货)2024-12-07 18:27:07
  • ipv4查询在线(如何查询ipv4)2024-12-07 18:27:07
  • bq25a图纸(b29图纸)2024-12-07 18:27:07
  • hiplot官网(hipee官网)2024-12-07 18:27:07
  • 单片机程序的入口地址是?(单片机程序的入口地址是0001h)2024-12-07 18:27:07
  • 全屏图片