前端不同伺服器之間的通訊 前端跨域方案

2021-10-12 06:27:06 字數 2326 閱讀 7627

所謂跨域,顧名思義,跨到了另外的域,域不僅僅指的是不同的網域名稱**,可能同乙個網域名稱不同的埠號也算不同的域。瀏覽器是有規則的,只要 協議、網域名稱、埠 有任何乙個不同,都被當作是不同的域。協議指的是 http,或者 https 等。

乙個域下的文件或指令碼試圖去請求另乙個域下的資源。

同源策略-sop(same origin policy)是一種約定,由 netscape 公司 1995 年引入瀏覽器,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,瀏覽器很容易受到 xss、csfr 等攻擊。所謂同源是指 協議+網域名稱+埠 三者相同,即便兩個不同的網域名稱指向同乙個 ip 位址,也非同源。

為了保證使用者資訊的安全,防止惡意的**竊取資料。

跨域場景

前端**:

後端**:

前端**:

$.ajax(})function mycallback(response)
後端**:

以上的方式看起來不錯,但遺憾的是僅支援 get 請求。

這個跨域僅限主域相同,子域不同的跨域應用場景。

兩個頁面都通過 js 強制設定document.domain為主域,就實現了同域。

父視窗**:

iframe>document.domain = 'example.com'  var content =   }script>
子視窗**:

document.domain = 'example.com'console.log(window.parent.content)
window.postmessage() 方法可以安全地實現 window 物件之間的跨域通訊。postmessage()方法允許來自不同源的指令碼採用非同步方式進行有限的通訊,可以實現跨文字檔、多視窗、跨域訊息傳遞。

傳送**:

documenttitle>head>iframe>    div>  div>  const domain = ''    let iframe = document.getelementbyid('frame')    iframe.onload = (e) =>       iframe.contentwindow.postmessage(json.stringify(data), domain)      console.group('mesage request from ' + document.location.href)      console.log(data)      console.groupend('adsfa')    }    window.addeventlistener('message', (e) => , false)script>body>html>
接收**:

documenttitle>head>const domain = ''    window.addeventlistener('message', (e) =>       let data = json.parse(e.data)      data.status = true;      data.message += ' world!'      data.result = {}      window.parent.postmessage(data, domain);    })script>body>html>
前端**:

documenttitle>head>input: div>  script>  const socket = io(':6001');    socket.on('connect', () => )      socket.on('disconnect', () => )    })    document.getelementbyid('input').onblur = (e) => script>body>html>
後端**:

<?php use phpsocketio\socketio;use workerman\worker;require __dir__ . '/../vendor/autoload.php';$socket = new socketio(6001);$socket->on('connection', function ($socket) );    $socket->on('discount', static function () );});worker::runall();

前端伺服器安裝

針對ubuntu系統安裝前端伺服器的命令 第一步 安裝nvm npm curl o bash 第二步 安裝node nvm install node 第三步 安裝live server npm install g live server 第四步 將前端頁面的html頁面,css,js,整合成乙個資料...

前端(伺服器應答)

1.1 輸入 當你開始輸入 比如www.cnblogs.com時瀏覽器就可以在書籤或者歷史記錄裡面 1.2.1 請求發起後,瀏覽器首先會解析這個網域名稱,首先它會檢視本地硬碟的 hosts 文 件,看看其中有沒有和這個網域名稱對應的規則,如果有的話就直接使用 hosts 檔案 裡面的 ip 位址。1...

前端(安卓)與伺服器通訊總結

前面提到了安卓客戶端和.net後端通訊,但是講解的並不是很詳細,同時 分析也不是很徹底,這些再後面一篇文章中都是會做分析的。乙個持續了三天的問題,在今天總算是解決了。雖然說自己以前也是做過相關的開發,但是了解的並不是那麼透徹!總結 而,最常見的就是瀏覽器訪問web頁面。1.連線當我們輸入這樣乙個請求...