跨域

解決跨域訪問,最常用有三種辦法

  • CORS
  • jsonp
  • 代理

CORS

cross origin resource share,跨資源共享

  • 主要是站在服務(wù)端的角度,對外開放訪問權(quán)限
  • 要求,我們需要有權(quán)限去編寫(修改)服務(wù)端的代碼
  • 同時,在瀏覽器端,不用寫任何代碼

注意:

Cors插件不是真正的解決方案,只是一個臨時,在開發(fā)的時候,可以用一用而已。
項目上線的時候,不可能使用這種方案。

jsonp

json with packing,json的一個包裝,是一種協(xié)議,協(xié)議用來傳遞數(shù)據(jù)的。是途徑。好比是傳遞情報的方式。

原理:

因為script標(biāo)簽 本身是可以進(jìn)行跨域訪問的,我們利用這一點,創(chuàng)建一個方法,動態(tài)的去添加一個script標(biāo)簽,并指定url,當(dāng)請求成功,服務(wù)端返回一個js字符串,作為script標(biāo)簽內(nèi)容,可以直接被js執(zhí)行

我們可以通過在瀏覽器端定義一個函數(shù)callback,傳遞給服務(wù)端,服務(wù)端可以獲取這個callback,并把要返回的數(shù)據(jù),作為這個callback的參數(shù),返回callback,

function addScript(url) {
    let script = docunment.creatElement('script');
    script.src = url;
    documnet.body.appendChild(script);
}
function cb(res){
    console.log(res);
}
addScript('網(wǎng)址?callback=cb');

注意

要實現(xiàn)jsonp,在服務(wù)端和瀏覽器端都需要編寫相應(yīng)的代碼。
Jsopn的原理是基于script標(biāo)簽,它==只能實現(xiàn)get跨域==,不能實現(xiàn)post跨域。[注意]

jsonp和json的區(qū)別,

  • Json,javascript object notation,js對象表示,是一個種格式,本質(zhì)是字符串。是數(shù)據(jù)。好比是情報。
  • Jsonp,json with packing,json的一個包裝,是一種協(xié)議,協(xié)議用來傳遞數(shù)據(jù)的。是途徑。好比是傳遞情報的方式。

代理

因為cros和jsonp都是需要后端有配合代碼,所以當(dāng)后端沒有配合代碼的時候,我們可以自己寫一個后端,然后替前端去請求數(shù)據(jù)

我們可以把要請求的接口作為數(shù)據(jù)發(fā)送給 作為代理的后端

$.ajax({
    url: '/daili',
    type: 'get',
    data: '接口地址',
    datatype: 'json',
    seccess: function(res){
        console.log(res);
    }
})

接著后端獲取到發(fā)送的數(shù)據(jù)

app.get('/daili', (req, res) => {
    let url = req.query.url;
    http.get(url, (response) => {
        let data = '';
        response.on('data', (chunk) => {
            data += chunk;
        });
        response.on('end', () => {
            res.json(JSON.parse(data));
        })
    })
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • http協(xié)議 Resource,URL,Request,Response,Headers http 請求的是資源R...
    Sharise_Mo佩珊閱讀 739評論 0 4
  • 1. 什么是同源策略 瀏覽器限制不同源的兩個網(wǎng)站間腳本和文本的相互訪問,只允許訪問同源下的內(nèi)容。所謂同源,就是指兩...
    熊蛋子17閱讀 756評論 1 6
  • 題目1.什么是同源策略? 同源策略(Same origin Policy): 瀏覽器出于安全方面的考慮,只允許與本...
    FLYSASA閱讀 1,887評論 0 6
  • 1. 什么是跨域? 跨域一詞從字面意思看,就是跨域名嘛,但實際上跨域的范圍絕對不止那么狹隘。具體概念如下:只要協(xié)議...
    w_zhuan閱讀 622評論 0 0
  • 丁酉年,生肖兔者,沖太歲,諸事不宜。 丁酉年,雙春閏月桃花年。 在沒有進(jìn)入2017年的時候,看到這樣的年歲信息,心...
    冰果真多閱讀 324評論 1 3

友情鏈接更多精彩內(nèi)容