摘要:考慮到安全問題,一個(gè)域名的只能發(fā)起對自己的域名的請求,否則就是跨站的,這是不被允許的。有人因此出,利用這一個(gè)特點(diǎn)即可發(fā)起跨站的腳本請求,并傳遞跨站數(shù)據(jù)給客戶端。此時(shí),站返回的數(shù)據(jù)已經(jīng)成功的傳遞給了站的客戶端。
考慮到安全問題,一個(gè)域名的js只能發(fā)起對自己的域名的請求,否則就是跨站的,這是不被允許的。但是,標(biāo)簽script內(nèi)加載的腳本是不受此限制的。有人因此hack出JSONP,利用這一個(gè)特點(diǎn)即可發(fā)起跨站的腳本請求,并傳遞跨站數(shù)據(jù)給客戶端。本文對此技術(shù)驗(yàn)證。
我們會(huì)創(chuàng)建兩個(gè)node服務(wù),分別為8081、8082兩個(gè)端口,扮演當(dāng)前站點(diǎn)和跨域站點(diǎn)。假設(shè)我從服務(wù)器A加載一個(gè)HTML文件,文件內(nèi)通過腳本標(biāo)簽發(fā)起對跨域站點(diǎn)B的請求。B站希望返回?cái)?shù)據(jù){msg:1}給A站的客戶端。
A站點(diǎn)。服務(wù)器文件home.js,提供靜態(tài)首頁服務(wù)var express = require("express"); var app = express(); var path = require("path") var public = path.join(__dirname, "public") app.use("/",express.static(public)) var server = app.listen(8081, function () { console.log("home site started ") })B站點(diǎn)。提供JSONP服務(wù)。文件名為:cors.js
var express = require("express"); var app = express(); app.get("/jsonp/:callback",function (req, res) { var callback = req.params.callback console.log(callback) res.end(callback+"({msg:1})"); }) var server = app.listen(8082, function () { console.log("CORS Server started") })其首頁index.html:
啟動(dòng)服務(wù)器
node home.js node cors.js
訪問localhost:81,看到一個(gè)對話框顯示1。此時(shí),B站返回的數(shù)據(jù)已經(jīng)成功的傳遞給了A站的客戶端。
完成。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91327.html
摘要:本文章記錄本人在深入學(xué)習(xí)中看書理解到的一些東西,加深記憶和并且整理記錄下來,方便之后的復(fù)習(xí)。格式數(shù)據(jù)極其的冗長。但是使用格式還是可能比實(shí)際的數(shù)據(jù)占用更多的空間。該字符串通過或者轉(zhuǎn)換為一個(gè)本地的對象。 本文章記錄本人在深入學(xué)習(xí)Javascirpt AJAX中看書理解到的一些東西,加深記憶和并且整理記錄下來,方便之后的復(fù)習(xí)。 避免使用 XML 沒有哪種格式從始至終比其他格...
摘要:中間部分由或多個(gè)以,分隔的關(guān)鍵字值對構(gòu)成,關(guān)鍵字字符串和值之間以分隔數(shù)組結(jié)構(gòu)以開始,結(jié)束。 Q:AJAX以何種格式來交換數(shù)據(jù)?跨域的需求如何解決? A:用JSON來傳數(shù)據(jù),靠JSONP來跨域(具體參見下文) AJAX 創(chuàng)建對象 AJAX = Asynchronous(英[e??s??kr?n?s]) JavaScript and XML(異步的 JavaScript 和 XML)。...
摘要:慣例上瀏覽器提供回調(diào)函數(shù)的名稱當(dāng)作送至服務(wù)器的請求中命名查詢參數(shù)的一部分,例如服務(wù)器會(huì)在傳給瀏覽器前將數(shù)據(jù)填充到回調(diào)函數(shù)中。 1 什么是Jsonp? JSONP(JSON with Padding)是數(shù)據(jù)格式JSON的一種使用模式,可以讓網(wǎng)頁從別的網(wǎng)域要數(shù)據(jù)。另一個(gè)解決這個(gè)問題的新方法是跨來源資源共享。 由于同源策略,一般來說位于www.42du.cn的網(wǎng)頁無法與不是 www.42du...
摘要:,跨站腳本攻擊。實(shí)際發(fā)的請求就是,用于表示這是一個(gè)請求。,用于告知服務(wù)器根據(jù)這個(gè)參數(shù)獲取回調(diào)函數(shù)的名稱,通常約定就叫。,回調(diào)函數(shù)的名稱,也是前面參數(shù)的值,可省略,會(huì)自動(dòng)生成。 本次課程主要圍繞 PHP 面試和筆試中經(jīng)常會(huì)出現(xiàn)的一些知識點(diǎn),但是面試官會(huì)在筆試題基礎(chǔ)上深入擴(kuò)展,那么你知道如何更好的回答讓面試官滿意嗎?題目收集自騰訊,迅雷,美圖等公司的筆試面試題,以及本人面試經(jīng)歷中印象中的知...
摘要:因?yàn)橥床呗缘南拗疲覀儾荒茉谂c外部服務(wù)器進(jìn)行通信的時(shí)候使用。這個(gè)是跨域服務(wù)器取數(shù)據(jù)的接口,參數(shù)為回調(diào)函數(shù)的名字,返回的格式為原理首先在客戶端注冊一個(gè)然后把的名字傳給服務(wù)器。 一、同源策略 同源策略,它是由Netscape提出的一個(gè)著名的安全策略,現(xiàn)在所有的可支持javascript的瀏覽器都會(huì)使用這個(gè)策略。 為什么需要同源策略,這里舉個(gè)例子: 假設(shè)現(xiàn)在沒有同源策略,會(huì)發(fā)生什么事...
閱讀 2333·2023-04-26 00:28
閱讀 3081·2019-08-30 15:55
閱讀 2752·2019-08-30 12:47
閱讀 1562·2019-08-29 11:04
閱讀 3190·2019-08-28 18:14
閱讀 954·2019-08-28 18:11
閱讀 1682·2019-08-26 18:36
閱讀 3397·2019-08-23 18:21