Appearance
跨域
跨域(Cross-Origin)是指在浏览器中,一个网页试图访问与它不同源(协议、域名或端口)的资源时,受浏览器的同源策略(Same-Origin Policy)限制的现象。
例如:
http://example.com和https://example.com不同源(协议不同);http://example.com和http://sub.example.com不同源(域名不同);http://example.com:8080和http://example.com:80不同源(端口不同)。
以下是一些常见的解决跨域问题的方法:
CORS(跨域资源共享):
服务器通过设置 HTTP 响应头(如
Access-Control-Allow-Origin)允许特定源的请求。例如,服务器返回
Access-Control-Allow-Origin: https://example.com表示允许example.com的请求。代理服务器:
在同源服务器上设置一个代理,将跨域请求转发到目标服务器,绕过浏览器限制。
WebSocket:
WebSocket 协议支持跨域通信,且不受同源策略限制。
JSONP(JSON with Padding):
利用
<script>标签不受同源策略限制的特性,通过动态插入脚本实现跨域数据请求(仅限 GET 请求)。PostMessage:
用于在不同源的
iframe或窗口之间通过window.postMessage进行通信。