まず、準備をしましょう。そうでなければ、あなたが私が意味することを理解していれば、他の人は理解していません。たとえ他の人が理解していても、理解していない人は常に存在します。それからあなたはそれを言わなければなりません。私が意味するのは、この説明をしなければならないということです。答えは必須です。誰もが理解しやすくするために。
例として、2つのメインドメイン名または1つのメインドメイン名 + 1つの2レベルドメイン名を取得することで、クロスドメインの問題を示すことができます。
クライアントA.com
サーバーB.comまたはSACOM
Angularjsバージョンv1.2.25
準備は非常にうまく行われ、私たちは編集者をサブラインとしてほとんど暴露しました。私は彼にこの普通の人を伝えません。
誰かがこの質問が長い間存在していると叫んだ。今それを尋ねるポイントは何ですか?まだ花をだますことができるのでしょうか?まあ、私は本当に花を開けて書くことができます。ショーを見てみましょう。この記事で私たちが実行しようとしていることは、完全なクロスドメインの例です。
次に、クライアントがデータをどのようにリクエストするかを見てみましょう
注意してください、私たちのコードはA.comドメイン名の下に書かれています
<!doctype html> <html lang = "en" ng-app = "app"> <head> <head> <meta charset = "utf-8"> <title> </title> <script src = "./ angular.min.js"> </script> <script type = "text/javascript" []); app.Controller( 'appctrl'、['$ scope'、function($ scope){$ http({method: 'jsonp'、url: 'http://www.b.com/test.php?callback=json_callback', $ http.jsonp( 'http://www.b.com/test.php?callback=json_callback')これはJSONPの形で直接クロスドメイン要求であり、その動作はjQueryのクロスドメイン要求方法とまったく同じであることがわかります。コールバックが修正されていることに注意してください。つまり、json_callback、変更を加えないようにしてください
サーバーB.comで要求されたデータを処理するtest.phpを処理する方法を見てみましょう。ここでは、ネイティブPHPメソッドを参照として使用します。
$ callback = isset($ _ get ['callback'])? $ _get ['callback']:default_callback; exit($ callback。 '('。JSON_ENCODE($ data)。 ')');
クライアントConsole.logレコードの結果を振り返ってみましょう
この時点で、ドメイン全体で正常にリクエストしました!
最後に、小さな要約を作成し、キーポイントに注意を払いましょう。
1.ドメインを介してクライアントが要求したURLの後に追加されたパラメーターは、コールバック= json_callbackです。パラメーターコールバックの値は、json_callbackとして指定されています。大文字、つまりjson_callbackは変更を加えないことに注意してください。これは大きなピットのように感じます。コールバックの値がわずかに変更された場合、クライアントはコールバック関数をグローバルに定義する必要があります。処理のために$スコープに渡すにはどうすればよいですか?不必要なトラブルを避けるために、これが何を意味するのかがあります
2。サーバーをもう一度見てください。サーバーは$ callback = $ _get ['callback']を指定する必要があります。コールバックを受信すると、受信したコールバックはクライアントが書いたコールバックの値ではないことがわかります。クライアントは、json_callbackを指定して、Angularjsの内部メカニズムをトリガーします。