鍍金池/ 問(wèn)答/HTML5  HTML/ ajax跨域問(wèn)題

ajax跨域問(wèn)題

ajax 跨域訪問(wèn)數(shù)據(jù),ie9和ie8接收不到數(shù)據(jù)
用angular的http也是一樣 是不是都是因?yàn)榭缬蛩圆胚@樣
有啥解決辦法嗎

回答
編輯回答
編輯回答
薄荷糖

在IE9及以下,ajax的跨域是有兼容性的,應(yīng)該是只有post才有的,get應(yīng)該是沒(méi)有問(wèn)題的,在post中請(qǐng)求頭部加上:crossDomain: true == !(document.all)在$.ajax({})

2017年10月30日 08:09
編輯回答
老梗

我只知道跨域的話 ajax的類型直接用jsonp 他是為跨域而生的,在后臺(tái)要設(shè)置一下消息的請(qǐng)求頭

2017年5月23日 02:45
編輯回答
愚念

接受不到數(shù)據(jù)的化你看一下后臺(tái)報(bào)錯(cuò)和返回的狀態(tài)碼 是404還是200還是其他狀態(tài)碼
如果你收到了狀態(tài)碼200且無(wú)法接收到數(shù)據(jù)很可能是你跨域?qū)懙挠袉?wèn)題
如果404可能你請(qǐng)求路徑有問(wèn)題
5開(kāi)頭是你服務(wù)器寫的有問(wèn)題
如果是跨域問(wèn)題的話 你就解決跨域問(wèn)題
比如jsonp CROS等
AJAX 是一種在無(wú)需重新加載整個(gè)網(wǎng)頁(yè)的情況下,能夠更新部分網(wǎng)頁(yè)的技術(shù) 本身是不解決跨域的
如果你沒(méi)遵守同源策略肯定會(huì)出現(xiàn)跨域問(wèn)題
推薦你一下文章:http://www.ruanyifeng.com/blo...

2017年10月6日 19:54
編輯回答
魚(yú)梓

第一選擇JSONP,如果不能使用需要檢查是否是http/https的原因,需要注入網(wǎng)站和jsonp地址都是http或者h(yuǎn)ttps.

更復(fù)雜的邏輯可以選擇下面的:
需要前后臺(tái)都加以配合,并且https|http保持一致:
前端:

function ajax(url,data) {
    var request = new XMLHttpRequest();
    request.addEventListener("load", function () {
        if (request.status == 200) {
           //請(qǐng)求成功,處理業(yè)務(wù)
        } else {
            if (opts.error) {
               //請(qǐng)求失敗了
            }
        }
    }, false);
    request.addEventListener("error", function () {
        console.log('出錯(cuò)了');
    }, false);
    request.addEventListener("abort", function () {
        console.log('中斷了');
    }, false);

  
    request.open("POST"), url, true);
    request.setRequestHeader("X-Requested-With", "XMLHttpRequest");
   
        var fromData = new FormData();
        for (var k in data) {
            fromData.append(k, opts.data[k]);
        }
        request.send(fromData);
    

}

后端,PHP為例:

    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
    //具體業(yè)務(wù)邏輯

如果你當(dāng)前的網(wǎng)頁(yè)是http的,那么被請(qǐng)求的http也應(yīng)該是http,反之https也是一樣的

2017年2月6日 04:04