跨域访问资源
1.解釋一下怎樣算是跨域:
頁(yè)面本身具有 協(xié)議 域名 端口,假設(shè)要請(qǐng)求的頁(yè)面位http://www.baidu.com:80 (默認(rèn)端口號(hào)80),則三個(gè)參數(shù)有任意一個(gè)不同就屬于跨域.
2.允許跨域請(qǐng)求的資源:js,css,jpg,png以及大部分href資源都可被跨域請(qǐng)求;
3.算是跨域請(qǐng)求的資源
- 后端接口的數(shù)據(jù)
- 其他域的Cookie
- 其他域的緩存
4.什么時(shí)候判定發(fā)生跨域
- 即使上述三個(gè)參數(shù)有不同,即發(fā)生了跨域,也可發(fā)出請(qǐng)求
- 服務(wù)器可接受數(shù)據(jù)
- 服務(wù)器可正常處理
- 服務(wù)器可正常返回?cái)?shù)據(jù)
- 瀏覽器可接收數(shù)據(jù)
- 接收到數(shù)據(jù)之后,發(fā)現(xiàn)頁(yè)面的域和請(qǐng)求的域不同,判定為跨域,不將結(jié)果傳遞給代碼
5.跨域的解決
1).后端(服務(wù)器)配合進(jìn)行跨域(比如說(shuō)pan.baidu.com訪問(wèn)zhidao.baidu.com)
? a.JSONP(正常的情況,返回的數(shù)據(jù)都是JSON格式,JSONP是特殊格式)
? b.后端設(shè)施Access-Control-Allow-Origin屬性以支持跨域(需要nodejs的知識(shí))
2).后端不配合進(jìn)行跨域
? a.iframe(只能顯示,不能控制)
? b.通過(guò)后端代理(自己的后端)(需要nodejs的知識(shí))
下一篇講JSONP吧
總結(jié)
- 上一篇: 前端必会的网络知识
- 下一篇: linear-gradient rad