JSONP解析--実行可能なコード
1610 ワード
セキュリティの問題を考慮すると、1つのドメイン名のjsは自分のドメイン名に対する要求を開始するしかありません.そうしないと、駅をまたぐことになります.これは許可されません.ただし、ラベルscriptにロードされるスクリプトはこの制限を受けません.そのため、JSONPをhackして、この特徴を利用してクロスステーションのスクリプト要求を開始し、クロスステーションのデータをクライアントに伝達することができます.本稿では、このテクノロジーを検証します.
現在のサイトとドメイン間サイトを演じる8081、8082の2つのポートのnodeサービスを作成します.サーバAからHTMLファイルをロードし、スクリプトラベルを使用してドメイン間サイトBへのリクエストを開始するとします.B局は、A局のクライアントにデータ{msg:1}を返すことを望んでいる.
localhost:81にアクセスすると、ダイアログボックスに1が されます.このとき、B から されたデータはA のクライアントに に された.
します.
現在のサイトとドメイン間サイトを演じる8081、8082の2つのポートのnodeサービスを作成します.サーバAからHTMLファイルをロードし、スクリプトラベルを使用してドメイン間サイトBへのリクエストを開始するとします.B局は、A局のクライアントにデータ{msg:1}を返すことを望んでいる.
Aサイト。サーバファイルjs、静的トップページサービスを提供
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サービスを提供します。ファイル名: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:
function cb(obj)
{
alert(obj.msg)
}
node home.js
node cors.js
localhost:81にアクセスすると、ダイアログボックスに1が されます.このとき、B から されたデータはA のクライアントに に された.
します.