[TOC]
## 跨域
前端 ajax 访问时,浏览器有同源策略
跨域条件:协议、域名、端口,有一个不同就算跨域
### 可以跨域的三个标签
1. `<img src> `
3. `<link href=''>`
4. `<srcipt href=''>`
`<img>`用于打点统计,统计网站可能是其他域
`<link>< script>`可以使用CDN,CDN的也是其他域
`< script>`可以用于 JSONP
### JSONP 实现原理
- 加载`http://coding.m.mooc.com/classindex.html`
- 不一定服务器端真正有一个 classindex. htm文件
- 报务器可以根据请求,动态生成一个文件,返回
- 同理于< script src="http;/ coding.m.imooccom/ api.js">
```
<script>
window.callback=function(data){
//这是我们跨域得到的信息
console.log(data)
}
</script>
<script scr='http://coding.m.imooc.com/api.js></script>
<!-- 以上返回 callback({x:100,y:200}) 括号中的 json 可自己更改-->
```
### 通过服务器设置解决跨域
```php
//注意:不同后端语言的写法可能不一样
//第二个参数填写允许跨域的域名称,不建议直接写"*k
response. setheader ("access-control-allow-origin","http://a.com,http://bcom")
response. setheader ("access-control-allow-headers","x-requested-with");
response. setheader ("access-control-allow-methods","PUT, POST, GET, DELETE, PTIONS")
//接收跨域的 cookie
response. setheader ("access-control-allow-credentials","true
```