什么叫跨域
是浏览器为了安全性,设置同源策略导致的,是浏览器的一种限制。同源策略 规定了WEB页面只能请求同源的资源。url由协议,域名,端口号。里面只要有一个不同就会导致跨域。
如何解决跨域
JSOPN
jsonp 是利用html里的script标签,src是不存在跨域限制的来实现。
- 客户端通过script回向其他服务器发送请求,同时定义回调函数
- 浏览器把准备好的数据,用请求的回调函数填充返回
- 浏览器获取
JS脚本,会立刻执行此脚本,也就会执行回调函数。所以会拿到相关数据
前后端配合
CORS
CORS,即跨源资源共享(Cross-Origin Resource Sharing),是一种用于解决AJAX请求在 web 应用中跨域问题的技术。由于浏览器的同源策略限制,一个web页面只能向与该页面相同域名、协议和端口的服务器发出HTTP 请求。如果向不同的源发送请求,就会触发同源策略的限制。CORS 技术通过添加特殊的HTTP 头,允许浏览器和服务器进行跨域通信。
后端设置
postMessage
postMessage 是Web API 的一部分,用于在不同的浏览器上下文之间进行安全的跨源通信,如不同的窗口、iframe 或者和工作线程之间的通信。
这里是如何使用 postMessage 实现跨域的基本步骤:
- 发送消息: 你可以通过调用
otherWindow.postMessage(message, targetOrigin)来发送消息。otherWindow是一个对其他窗口的引用,如iframe的contentWindow属性、执行窗口打开的结果,或是命名窗口。message是你要发送的数据,可以是任何结构化克隆算法能处理的 JavaScript 数据类型。targetOrigin是一个字符串,指定了接收消息的文档必须来自哪个源。 - 接收消息: 在接收窗口,你需要监听
message事件来接收消息。事件处理函数将会接收一个MessageEvent实例,这个实例有几个有用的属性,包括data(发送的消息数据)、origin(发送消息的文档源)和source(发送消息的Window对象)。
前端设置
nginx
Nginx是一个开源的、高性能的、可扩展的 HTTP 静态服务器和反向代理服务器。它也可以用作邮件代理服务器和通用的 TCP/UDP 代理服务器。
服务器与服务器之间不存在跨域
websocket
WebSocket 是一种网络通信协议,提供了全双工(full-duplex)通信渠道,也就是说,服务器和客户端可以同时进行数据传输,而不需要像 HTTP 请求那样由客户端先发起请求。WebSocket 在单个TCP 连接上提供持久的连接,以便在客户端和服务器之间进行实时通信。