摘要:考慮到安全問題,一個域名的只能發(fā)起對自己的域名的請求,否則就是跨站的,這是不被允許的。有人因此出,利用這一個特點即可發(fā)起跨站的腳本請求,并傳遞跨站數(shù)據(jù)給客戶端。此時,站返回的數(shù)據(jù)已經(jīng)成功的傳遞給了站的客戶端。
考慮到安全問題,一個域名的js只能發(fā)起對自己的域名的請求,否則就是跨站的,這是不被允許的。但是,標簽script內(nèi)加載的腳本是不受此限制的。有人因此hack出JSONP,利用這一個特點即可發(fā)起跨站的腳本請求,并傳遞跨站數(shù)據(jù)給客戶端。本文對此技術(shù)驗證。
我們會創(chuàng)建兩個node服務(wù),分別為8081、8082兩個端口,扮演當前站點和跨域站點。假設(shè)我從服務(wù)器A加載一個HTML文件,文件內(nèi)通過腳本標簽發(fā)起對跨域站點B的請求。B站希望返回數(shù)據(jù){msg:1}給A站的客戶端。
A站點。服務(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站點。提供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:
啟動服務(wù)器
node home.js node cors.js
訪問localhost:81,看到一個對話框顯示1。此時,B站返回的數(shù)據(jù)已經(jīng)成功的傳遞給了A站的客戶端。
完成。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/91327.html
摘要:本文章記錄本人在深入學習中看書理解到的一些東西,加深記憶和并且整理記錄下來,方便之后的復習。格式數(shù)據(jù)極其的冗長。但是使用格式還是可能比實際的數(shù)據(jù)占用更多的空間。該字符串通過或者轉(zhuǎn)換為一個本地的對象。 本文章記錄本人在深入學習Javascirpt AJAX中看書理解到的一些東西,加深記憶和并且整理記錄下來,方便之后的復習。 避免使用 XML 沒有哪種格式從始至終比其他格...
摘要:中間部分由或多個以,分隔的關(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ù)的名稱當作送至服務(wù)器的請求中命名查詢參數(shù)的一部分,例如服務(wù)器會在傳給瀏覽器前將數(shù)據(jù)填充到回調(diào)函數(shù)中。 1 什么是Jsonp? JSONP(JSON with Padding)是數(shù)據(jù)格式JSON的一種使用模式,可以讓網(wǎng)頁從別的網(wǎng)域要數(shù)據(jù)。另一個解決這個問題的新方法是跨來源資源共享。 由于同源策略,一般來說位于www.42du.cn的網(wǎng)頁無法與不是 www.42du...
摘要:,跨站腳本攻擊。實際發(fā)的請求就是,用于表示這是一個請求。,用于告知服務(wù)器根據(jù)這個參數(shù)獲取回調(diào)函數(shù)的名稱,通常約定就叫。,回調(diào)函數(shù)的名稱,也是前面參數(shù)的值,可省略,會自動生成。 本次課程主要圍繞 PHP 面試和筆試中經(jīng)常會出現(xiàn)的一些知識點,但是面試官會在筆試題基礎(chǔ)上深入擴展,那么你知道如何更好的回答讓面試官滿意嗎?題目收集自騰訊,迅雷,美圖等公司的筆試面試題,以及本人面試經(jīng)歷中印象中的知...
摘要:因為同源策略的限制,我們不能在與外部服務(wù)器進行通信的時候使用。這個是跨域服務(wù)器取數(shù)據(jù)的接口,參數(shù)為回調(diào)函數(shù)的名字,返回的格式為原理首先在客戶端注冊一個然后把的名字傳給服務(wù)器。 一、同源策略 同源策略,它是由Netscape提出的一個著名的安全策略,現(xiàn)在所有的可支持javascript的瀏覽器都會使用這個策略。 為什么需要同源策略,這里舉個例子: 假設(shè)現(xiàn)在沒有同源策略,會發(fā)生什么事...
閱讀 2404·2023-04-26 00:28
閱讀 3134·2019-08-30 15:55
閱讀 2809·2019-08-30 12:47
閱讀 1625·2019-08-29 11:04
閱讀 3322·2019-08-28 18:14
閱讀 1027·2019-08-28 18:11
閱讀 1729·2019-08-26 18:36
閱讀 3447·2019-08-23 18:21