国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

再也不學AJAX了!(三)跨域獲取資源 ② - JSONP & CORS

enda / 3054人閱讀

摘要:瀏覽器的同源策略固然保障了互聯網世界的數據隱私與數據安全,但是如果當我們需要使用跨域請求資源時,同源策略又會成為開發者的阻礙。我們之前提到過,如果想要繞過瀏覽器同源策略,實現使用技術跨域獲取資源,需要服務端和客戶端的協同合作。

瀏覽器的“同源策略”固然保障了互聯網世界的數據隱私與數據安全,但是如果當我們需要使用AJAX跨域請求資源時,“同源策略”又會成為開發者的阻礙。在本文中,我們會簡單介紹需要跨域請求資源的兩種情景,然后,詳細解釋目前主流的四種跨域請求資源方案。

讓我們開始吧!

一、何時需要跨域

試想,當我們擁有多個站點,并且這些站點又經常共享相同的數據,那么為每個站點存儲一份數據看起來就蠢透了。更好的方案是,我們建設一臺靜態資源存儲服務器,然后讓我們的所有站點都從這一臺服務器上獲取資源。很理想的方案,但是現實中,我們首要解決的問題便是瀏覽器的“同源策略”,別忘了,不同域之間無法通過AJAX技術獲取資源。這是需要跨域獲取資源的主要情景。

另外,站在互聯網“開放,平等,自由”精神的角度上講,如果所有人的數據都被設置為只有同域才能訪問,那么互聯網世界未免也太無聊了,如果我就是想要與更多的人分享我的數據,難道不應該有辦法讓我做到這一點嗎?

當然有辦法,下面我們就將一一解釋當下主流的跨域請求資源方式。

二、跨域請求資源方案

我們將主要介紹以下四種跨域請求資源的方案,并逐一解釋他們的原理,實用方式以及優缺點,希望你和我一樣有耐心,耐心總是能帶來回報:

野路子出身卻好用的方式:JSONP;

官方推薦的跨域資源共享方案:CORS;

使用HTML5 API:postMessage;

拋棄HTTP,使用:Web Sockets;

在開始下面的內容之前,我們首先需要強調一點,無論是怎樣的跨域資源獲取方案,本質上都需要服務器端的支持。跨域獲取資源之所以能夠成功,本質是服務器默許了你有權限獲取相應資源。下面我們所運用的種種方式,實際上是客戶端和服務端互相配合,繞過同源策略進行數據交互的工作,千萬不要誤以為掌握了下述技術后,我們就能成為一個黑客 ???♂?。

(一)野路子出身卻異常好用的方式:JSONP

正如標題所描述的那樣,JSONP技術是早期某個(些?)聰明的程序員發明的跨域資源獲取方式,由于該技術的簡單易用,逐漸變得越來越流行,最終成為經典的跨域獲取資源方案。

JSONP是“JSON with padding”的簡寫,我將其翻譯為“被包裹的JSON”,當你看完這個章節,你一定會覺得這個名字相當貼切。

讓我們模擬一下當初想到JSONP技術的高手程序員是如何推理的:

首先,我們應該清楚的認識到,瀏覽器的“同源策略”只是阻止了通過AJAX技術跨域獲取資源,而并沒有禁止跨域獲取資源這件事本身,正因如此,我們可以通過標簽,標簽以及

這意味著什么呢?這意味著被加載的文件與HTML文件下的其他JS文件共享一個全局作用域。也就是說,標簽加載到的資源是可以被全局作用域下的函數所使用的!

但是慢著!如果

閱讀需要支付1元查看
<