什麼是跨域?解決跨域的方法

2022-07-08 01:06:10 字數 1669 閱讀 3793

由於瀏覽器出於安全考慮的同源策略限制需要跨域,所謂的同源就是兩個域需要相同的 協議(protocol)、網域名稱(host)、埠(port)必須相同

三者之前任何乙個不同都構成跨域的情況,比如說前後端分離之後,前後都在兩個域之下,前端的瀏覽器請求後端伺服器的資料的時候就需要做跨域處理

1、無法讀取非同源網頁的 cooike、localstorage、indexeddb

2、無法接觸非同源網頁的dom

3、無法向非同源位址傳送ajax請求

jsonp是伺服器與客戶端跨域通訊常用的方法,最大的特點就是簡單適用、相容性好(可以相容低版本的ie),但是只支援get請求,不支援post

思想:由於ajax會受跨域的影響,但是script不受影響,通過在script中新增json資料,伺服器收到請求後將資料放在乙個**函式的引數位置傳回來

原生解決跨域

vue解決跨域
this.$http.jsonp('', ,

jsonp: 'handlecallback'

}).then((res) => )

1、普通跨域請求:只需伺服器端設定access-control-allow-origin

2、帶cookie跨域請求:前後端都需要進行設定

原生ajax

var xhr = new xmlhttprequest(); // ie8/9需用window.xdomainrequest相容

// 前端設定是否帶cookie

xhr.withcredentials = true;

xhr.open('post', '', true);

xhr.send('user=admin');

// 請求狀態

xhr.onreadystatechange = function()

};

jquery ajax
$.ajax(,

xhrfields: ,

crossdomain: true, // 會讓請求頭中包含跨域的額外資訊,但不會含cookie

// 資料接收完畢

req.addlistener('end', function() );

res.write(json.stringify(postdata));

res.end();

});});

server.listen('8080');

console.log('server is running at port 8080...');

什麼是跨域

什麼是跨域 url 所謂同源是指,網域名稱,協議,埠均相同 舉例 呼叫 非跨域 呼叫 主網域名稱不同 123 456,跨域 呼叫 子網域名稱不同 abc def,跨域 呼叫 埠不同 8080 8081,跨域 呼叫 協議不同 http https,跨域 請注意 localhost和127.0.0.1雖...

什麼是跨域

當乙個請求url的 協議 網域名稱 埠三者之間任意乙個與當前頁面url不同即為跨域。當前頁面url 被請求頁面url 是否跨域 原因 index.html 否 同源 協議 網域名稱 埠號相同 跨域 協議不同 http https 跨域 主網域名稱不同 test baidu 跨域 子網域名稱不同 ww...

什麼是跨域 怎麼解決

例如 a頁面想獲取b頁面資源,如果a b頁面的協議 網域名稱 埠 子網域名稱不同,所進行的訪問行動都是跨域的,而瀏覽器為了安全問題一般都限制了跨域訪問,也就是不允許跨域請求資源。注意 跨域限制訪問,其實是瀏覽器的限制。理解這一點很重要!首先我們用nginx作為 伺服器和使用者互動,這樣使用者就只需要...