FAQ_001: CrossSite/跨域

## refs - [Cross Site Resource Share 动图详解](https://dev.to/lydiahallie/cs-visualized-cors-5b8h) - [AJAX 与跨域通信(二):跨域解决方案](https://cloud.tencent.com/developer/article/1536496) - [跨域请求设置为 * Firefox 不生效请求失败](https://www.jianshu.com/p/292b6d911a56) ## content - JSONP ```js // 1.DomainA 回调函数 function handleResponse(data){ console.log(data); } // 2.动态创建 script var script = document.createElement('script'); script.src = 'http://DomainB/json?callback=handleResponse'; document.body.insertBefore(script,document.body.firstChild); // 加载完了上述<script>之后,里面执行`handleResponse(someDataFromTestCom)` // DomainA 就这样获取了 DomainB 的数据,实现了跨域 ``` - CORS - 简单请求: {head|post|get} 携带的头信息仅限于 {Accept|Accept-Language|Content-Language|Last-Event-ID|Content-Type{application/x-www-form-urlencoded|multipart/form-data|text/plain},CORS的时候header额外携带origin字段; - 非简单请求:通过 {option} 发送 preflight request; - 服务端发送响应 `response.setHeader("Access-Control-Allow-Origin", "DomainB or *")` - 另外还有 `Access-Control-Allow-Header` `Access-Control-Allow-Method` 指定 CORS 响应头/HttpMethod - 图像 ping - document.domain - 适用于主域相同、子域不同的两个域之间的跨域通信 - window.name - window 对象有个 name 属性,在一个窗口的生命周期内,window.name 会被该窗口的所有页面所共享、所读写,不管这些页面是同源还是不同源

Date:
Words:
254
Time to read:
1 min