【转】什么是CORS
CORS 全稱(chēng)是跨域資源共享(Cross-Origin Resource Sharing),是一種 AJAX 跨域請(qǐng)求資源的方式,支持現(xiàn)代瀏覽器,IE支持10以上。
CORS與JSONP的使用目的相同,但是比JSONP更強(qiáng)大。JSONP只支持GET請(qǐng)求,CORS支持所有類(lèi)型的HTTP請(qǐng)求。JSONP的優(yōu)勢(shì)在于支持老式瀏覽器,以及可以向不支持CORS的網(wǎng)站請(qǐng)求數(shù)據(jù)。
CORS可以分成兩種請(qǐng)求
瀏覽器將CORS請(qǐng)求分成兩類(lèi):簡(jiǎn)單請(qǐng)求(simple request)和非簡(jiǎn)單請(qǐng)求(not-so-simple request)
只要同時(shí)滿(mǎn)足以下兩大條件,就屬于簡(jiǎn)單請(qǐng)求
- 請(qǐng)求方法是以下三種方法之一:
- HTTP的頭信息不超出以下幾種字段:
不同時(shí)滿(mǎn)足上面兩個(gè)條件,就屬于非簡(jiǎn)單請(qǐng)求。
簡(jiǎn)單請(qǐng)求時(shí) Request Headers 會(huì)添加一個(gè) Origin 字段
Accept:*/* Accept-Encoding:gzip, deflate, sdch Accept-Language:zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,pt;q=0.2,fr;q=0.2 Cache-Control:no-cache Connection:keep-alive Host:b.code.com:8080 Origin:http://a.code.com:8080 Pragma:no-cache Referer:http://a.code.com:8080/ User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36以上會(huì)出現(xiàn)本次請(qǐng)求來(lái)自哪個(gè)源(協(xié)議 + 域名 + 端口),
Origin 指定的源,不在許可范圍內(nèi),服務(wù)器會(huì)返回一個(gè)正常的HTTP回應(yīng)。
Response Headers 沒(méi)有包含 Access-Control-Allow-Origin 字段,
服務(wù)器拋出XMLHttpRequest不能加載的錯(cuò)誤
如果 Origin 指定的域名在許可范圍內(nèi),服務(wù)器返回的響應(yīng),會(huì)多出1個(gè)頭信息字段。
Access-Control-Allow-Origin:http://a.code.com:8080對(duì) Access-Control-Allow-Origin的值要么是請(qǐng)求時(shí)Origin字段的值,要么是一個(gè)*,表示接受任意域名的請(qǐng)求。
// 限制當(dāng)前請(qǐng)求http://a.code.com:8080可以獲取數(shù)據(jù) header("Access-Control-Allow-Origin", "http://a.code.com:8080"); // 接受任何請(qǐng)求 // header("Access-Control-Allow-Origin", "*");以上就可以跨域資源共享,實(shí)現(xiàn)跨域。
查看實(shí)例代碼
https://boloog.github.io/demos/Cross-domain/mp4/cors.mp4
?
2人點(diǎn)贊
?
日記本
?
作者:柏龍
鏈接:https://www.jianshu.com/p/e79024ba9cc7
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
總結(jié)
以上是生活随笔為你收集整理的【转】什么是CORS的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 北京新地标 亚洲最大铁路枢纽客站开通运营
- 下一篇: 第四节: EF调用存储过程的通用写法和D