我對某些項目使用knitrBootstrap
,我開始學習JQuery(Javascript)和CSS以對生成的頁面進行一些修改。我也明白,通常CSS文件和腳本被放置在單獨的文件中並從相同的域(或本地)加載到HTML文檔,但是當我閱讀這兩個庫的文檔時,我發現它們可以從CDN加載提供者,並且從knitrBootstrap
生成的HTML文件也可以做到這一點。內容分發網絡(CDN):加載CSS或Javascript庫
例如爲:http://rawgithub.com/jimhester/knitrBootstrap/master/vignettes/illusions.html(18-24行)
<!-- jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<!-- bootstrap -->
<link href=https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css rel="stylesheet">
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
這似乎很不錯,因爲它允許託管時,從第三方供應商和零部件資源,自己的服務器上加載靜態資源。不過,我也對安全性有些擔憂(不完全是爲了我的目的,而是針對使用此類網頁的網頁),因此對它進行了搜索。我發現了同源策略的概念,並且從我的理解中,JQuery提供的函數不應該被允許改變頁面本身的DOM對象,但是這樣做。
爲什麼JQuery代碼和Bootstrap CSS允許更改剩餘的文檔,即使它們不是從相同的域加載而是從另一個域加載的(在本例中爲CDN)?
感謝您對此解釋pickypg – user3212577
因此,一旦加載了可能受到攻擊的腳本,它可以查詢所有cookie和會話變量,並通過帶有參數的簡單GET將其發送給第三方服務器?另外爲什麼ajax會被同源策略阻塞?它的核心只是一個GET到任何遠程服務器?最後一個問題:我似乎無法找到關於這個特定主題的更多文獻(帶有CDN鏈接的JS)。你有一些暗示嗎?非常感謝您的幫助:) – user3212577
是的,受損腳本可以輕鬆地將您的cookies(通常是您的會話信息作爲結果)發佈到第三方服務器,但不一定只是通過查詢字符串。 Ajax不限於發出'GET'請求。它可以使用'GET','POST','PUT','DELETE'等。它被阻止以防止這種確切的情況發生 - 很不幸,這很容易解決;請參閱[JSONP](http ://en.wikipedia.org/wiki/JSONP#Script_element_injection))。關於JavaScript和CDN並無太多可說的地方;您可以下載它,或者不要,無論CDN如何。 – pickypg