クロスドメイン-jsonp

クロスドメインの問題を解決するためのフロントエンド
 
同一生成元ポリシー
  元ポリシーは、ドキュメントのプロパティを取得したり、別のドメイン上で動作させるために1つのドメインからロードされたスクリプトを防ぐことができます。言い換えれば、URLのドメインがして、現在の要求と一致する必要があります
  同じドメインのWebページ。これは、ブラウザがそれらの間の動作を防止するために、異なるソースからコンテンツを分離することを意味します。この戦略はから、非常に古いブラウザです
  Netscape Navigatorのバージョン2.0が起動します
JSONPとは何ですか?
  JSONP(JSONパディングとは)ジャバスクリプトを通じて、クライアント側の統合スクリプトタグに返されたサーバーを許可する非公式の合意であります
  クロスドメインアクセスの形でコールバック(これは単純な実現JSONP形式です)
JSONPの使用は何ですか?
  同一生成元ポリシー制限するので、XMLHttpRequestが唯一、クロスドメインリクエストを達成するために、現在のリソース源(ドメイン名、プロトコル、ポート)を要求するためにあなたがすることができます許可します
  クロスドメインリクエストのスクリプトタグ、その後、クロスドメインのデータ要求を解決するために、サーバーおよびJSONコールバック関数にデータを出力
JSONPの使い方?
  クライアントコールバック関数の後のステートメントでは、クライアントは、クロスドメインスクリプトタグを介してサーバにデータを要求し、サーバーは、適切なデータと動的な実行を戻ります
  伝達関数
JSONPの原則:
  まず、クライアントはサーバーにコールバックし、コールバックの名前を登録します。
  この時点で、サーバーへの氏のJSONデータ。
  次に、関数を生成するJavaScript構文的には、パラメータの関数名は、JSONPを渡されます。
  直接参照モードに最後にJSONデータは、関数は、このようにクライアントに、JSドキュメント文法を生成し、配置されています。
  クライアントのブラウザはスクリプトタグ、文書を解析し、あらかじめ定義され、クライアントに渡されたパラメータとしてのjavascriptのリターン、ケース内のデータを実行します
  (動的なコールバック関数)にコールバック関数
ます。<script type = "text / javascriptの" SRC = "jquery.js"> </ SCRIPT> 
ます。<script type = "text / javascriptの"> 
$アヤックス({ 
  URL: "http://www.qcweb1.com/services .PHP」
  データ型: 'JSONP' 
  データ''    JSONP: 'コールバック'    成功:関数(結果){(中VAR iに対する結果){アラート(iは+ ":" +もたらす[I]); / /循环输出:1、B:2、など。     }}、タイムアウト:3000 })。</ SCRIPT>
 

 

<?PHP 
(// JSONデータは、サーバの$ ARR =配列''から返さ => 2、 'C' => 3、 'D' => 4、 'E' => 5 1、 'B' =)> ; 
  $のjson_encode結果=($のARR); 
  // $ _GETエコー[ 'コールバック'] '( "こんにちは、世界!")' ;. 
  //エコー$ _GET [ 'コールバック'] "($結果)。"; 
  //動的実行コールバック
  $コールバック= $ _ GET [ 'コールバック']; 
  。エコー$コールバック"(結果$)"; 
?>
<スクリプト> 
関数kuayu(結果){ 
    にconsole.log(結果)。
    
} 

</ SCRIPT> 
<スクリプトSRC = "http://web2.com/server.php?callback=kuayu"> </ SCRIPT>

 

 
以下
1、アヤックスJSONPとこの2つの技術がオブジェクトのように「見える」で呼ばれている、あまりにも、リクエストURLは、サーバはにデータを返します。
ライン処理、したがってフレームなどのjQuery EXT JSONPを封入AJAXの形態とみなされます。
2、しかし、AJAXとJSONP実際に何か異なる性質。コアはJSONPを移動している間、AJAXは、XmlHttpRequestのことで、このページ上の非中核コンテンツを取得することです
状態は、JSスクリプトサーバを呼び出すための<script>タグを追加しました。
3、実際には、AJAXプロキシサーバは、クロスドメインを介して達成することができるように、AJAXとJSONPの差は、クロスドメインかどうかではなく、それ自体をJSONPように、同じドメインを排除するものではありません
取得したデータ。
4、そこにある、JSONPは一つの方法またはオプションのプロトコルである、AJAXなど、のような、それは必ずしもあなたの場合は、データを転送するためにJSON形式を使用する必要はありません。
喜んで、文字列が行いますが、これは、公共サービスを提供するJSONPで助長されていません。
すべてのすべてではなく、特殊なケースのJSONPアヤックス、JSONPパッケージアヤックスにも、jQueryと他の巨人、それを変更しないで!
 
クロスドメインの問題を解決するためのバックエンド
 
設定することによりアクセス制御-許可-起源をクロスドメインに
 

1、単一のドメインへのアクセスを許可します

ドメイン名(http://web1.com)のクロスドメインアクセスを指定して、あなたは、単にファイルヘッダhttp://server.web.com/server.phpに次のコードを追加することができます。

ヘッダ「アクセス制御-許可-起源:HTTP://web1.com」)。

2、複数のドメイン名を許可します

(://web1.com,http://web2.comなどHTTP)のクロスドメインアクセス、あなたは、単にファイルヘッダhttp://server.web.com/server.phpに次のコードを追加することができ、複数のドメイン名を指定します。

$起源= ISSET $ _SERVER [ 'HTTP_ORIGIN' ])?$ _SERVER [ 'HTTP_ORIGIN' ]  '' ; $ allow_origin = 配列'http://client1.web1.com' 'http://client2.web2.com' ); 場合in_array $起源$のallow_origin )){ ヘッダ'アクセス制御は、許可-起源:' $由来); }       

3、すべてのドメイン名を許可します

すべてのドメイン名は、単に次のコードhttp://server.web.com/server.phpファイルのヘッダを追加する許可:

ヘッダ「アクセス制御-許可起源:*」);

おすすめ

転載: www.cnblogs.com/superzwb/p/11165409.html