ホームページ >ウェブフロントエンド >jsチュートリアル >jQuery AJAX はクロスドメイン通信における同一オリジン ポリシーの制限をどのように克服できるでしょうか?

jQuery AJAX はクロスドメイン通信における同一オリジン ポリシーの制限をどのように克服できるでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-22 22:23:18187ブラウズ

How Can jQuery AJAX Overcome Same-Origin Policy Restrictions for Cross-Domain Communication?

jQuery AJAX クロスドメイン通信

クロスドメイン AJAX リクエストは、同一オリジン ポリシーの制限により制限に遭遇します。あるドメイン上のクライアント スクリプトが別のドメインのリソースにアクセスしようとすると、通常はセキュリティ上の理由で失敗します。

ケース:

テストの場合を考えてみましょう。 php はローカルホスト上に存在し、testserver.php は Web サーバー上でホストされます。 test.php から testserver.php への AJAX リクエストは失敗し、リクエストのクロスドメインの性質により「エラー」アラートがトリガーされます。

解決策:

この制限を克服するには、JSONP (パディング付き JSON) を使用できます。

jQuery:

$.ajax({
  url: "testserver.php",
  dataType: "jsonp", // Note the lowercase 'p' in JSONP
  success: function (json) {
    // Handle successful response
    alert("Success");
  },
  error: function () {
    alert("Error");
  }
});

PHP:

<?php
$arr = array("element1", "element2", array("element31", "element32"));
$arr['name'] = "response";
echo $_GET['callback'] . "(" . json_encode($arr) . ");";
?>

PHP では、コールバック関数名が渡されましたjQuery によるものは、$_GET['callback'] 経由で利用できます。 「callbackName('jsonString')」形式で応答をエコーすることで、jQuery が JSON データを解釈できるようにします。

代替:

jQuery は短縮メソッドを提供します。クロスドメイン AJAX リクエストを簡素化する $.getJSON() と呼ばれます。ただし、「callback=?」を追加する必要があります。 GETパラメータとしてURLに追加します。 jQuery は、このプレースホルダーを生成されたコールバック メソッドに自動的に置き換えます。

以上がjQuery AJAX はクロスドメイン通信における同一オリジン ポリシーの制限をどのように克服できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。