跨域方法
Jsonp:
采用非同源限制標(biāo)簽進(jìn)行處理請(qǐng)求棍厂,我理解的jsonp => json - page
一個(gè)json頁面
但是它只能處理get的請(qǐng)求,不適用于RESTful 原則
但是它兼容低版本瀏覽器,
將返回的數(shù)據(jù)作為指定的回調(diào)函數(shù)的參數(shù),script標(biāo)簽引入的函數(shù)是屬于window全局的,所以你只需要在另一個(gè)script中指定回調(diào)函數(shù),這樣就可以獲取到服務(wù)端數(shù)據(jù)了
<script>
function test(data) {
console.log(data);
return data;
}
</script>
<script
type="text/javascript"
src="http://127.0.0.1:8090/v1/system/user/getTotal?callback=test"
></script>
cors:
后端服務(wù)器直接配置,前端請(qǐng)求會(huì)自動(dòng)添加字段origin(/??r?j?n/)
當(dāng)然這里的字段值可以是指定的url,相當(dāng)于添加一個(gè)白名單
res.header('Access-Control-Allow-Origin', '*')
但是這些只能處理簡(jiǎn)單請(qǐng)求
只要頭部信息只有下面這些吹菱,并且只有這三種方法的都是簡(jiǎn)單請(qǐng)求
(1) 請(qǐng)求方法:
HEAD
GET
POST
(2)HTTP的頭信息:
Accept
Accept-Language
Content-Language
Last-Event-ID
Content-Type:
application/x-www-form-urlencoded、 multipart/form-data彭则、text/plain
說白了就是鳍刷,自定義字段,非這三種請(qǐng)求的都會(huì)觸發(fā)復(fù)雜請(qǐng)求(就是會(huì)觸發(fā)OPTIONS方法和服務(wù)器驗(yàn)證)俯抖,通過驗(yàn)證才會(huì)正式請(qǐng)求服務(wù)器倾剿。
所以一般還需要設(shè)置,可允許更改頭部字段以及內(nèi)容字段
res.header('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type') // 這個(gè)里面需要添加前端發(fā)送請(qǐng)求里面添加的自定義字段才行
res.header('Access-Control-Allow-Methods','PUT,POST,GET,DELETE,OPTIONS')
proxy:
webpack里面可以設(shè)置devServer proxy屬性蚌成,使其進(jìn)行跨域
我所理解的就是直接繞過了服務(wù)器前痘,那何來同源限制