所謂跨域,顧名思義,跨到了另外的域,域不僅僅指的是不同的網域名稱**,可能同乙個網域名稱不同的埠號也算不同的域。瀏覽器是有規則的,只要 協議、網域名稱、埠 有任何乙個不同,都被當作是不同的域。協議指的是 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.連線當我們輸入這樣乙個請求...