跨域 CORS
跨域问题指的是:浏览器限制了当前网页从不同的域名、端口、协议访问另一个网站的资源的限制。浏览器是基于同源策略来限制跨域访问的。
同源策略指的是:协议、域名、端口号必须完全相同
解决跨域指的是:通过各种方式,避开浏览器的安全限制
解决方案
JSONP
:通过动态创建<script>
标签,通过src
属性加载一个API
,并在url
参数中携带回调函数名,服务端返回一个执行该回调函数的JavaScript
脚本。JSONP
仅支持GET
请求,且只能用于跨域获取数据,无法实现向服务器提交数据。CORS
:服务器设置响应头中的Access-Control-Allow-Origin
字段,允许指定的域名跨域访问该资源。使用CORS
需要服务器端支持,且需要前端进行额外的配置,可以支持GET/POST
等请求类型。代理服务器
:前端请求自己的服务器,自己的服务器再去请求目标服务器,最后将目标服务器的响应返回给前端。由于是同源请求,不存在跨域问题,但需要在自己的服务器上进行配置。WebSocket
:WebSocket
协议是一种在单个TCP
连接上进行全双工通信的协议,它不受同源策略的限制。通过在客户端和服务器之间建立WebSocket
连接,可以在跨域情况下进行实时通信。postMessage
:可以在跨域的窗口之间发送消息,通过对消息的监听来实现跨域通信。