検索

ホームページ  >  に質問  >  本文

javascript - jquery の $.post() がドメイン間でデータを送信できないのはなぜですか?

タイトルのように、jquery でカプセル化された ajax メソッドが get メソッドでデータを送信するために jsonp を使用できるのに、ドメイン間でデータを送信するために post メソッドを直接使用できるのはなぜですか? 根本的な原因は何ですか?

習慣沉默習慣沉默2780日前638

全員に返信(3)返信します

  • 世界只因有你

    世界只因有你2017-05-16 13:38:50

    jquery 独自の関数はサポートされていませんが、jquery に基づいてクロスドメイン投稿を実装できます。

    jquery 自体は jsonp クロスドメインのみをサポートしますが、jsonp の原則により get のみのサポートに制限されます。

    ネイティブ jquery クロスドメインを実装する場合は、リクエスト アドレスの先頭に Access-Control-Allow-Origin を追加し、値を API を呼び出すドメイン名 (または *) に設定します

    返事
    0
  • 仅有的幸福

    仅有的幸福2017-05-16 13:38:50

    クロスドメインは一般に 2 つのタイプに分類されます:

    1. jsonp クロスドメイン。 jsonp はもともと get file メソッドを使用してクロスドメイン チェックをバイパスするため、post をサポートしていません。 get を使用してポストリクエストをシミュレートするサードパーティライブラリもあります。

    2. COR クロスドメイン。 COR クロスドメインでは、サーバー側の Access-Control-Allow-Origin 応答を変更する必要があります。 通常、クライアントは 2 つの post リクエストを送信します。1 回目はオプションのタイプで、サーバーが許可を返した後、2 回目はデータを含む実際のリクエストを送信します。
      回答者の条件が許せば、投稿を直接サポートできる 2 番目のクロスドメイン方法を使用してみてください。

    サーバー構成を変更できない場合、回答者はサードパーティのライブラリを探して、jsonp を使用して投稿リクエストをシミュレートできるかどうかを確認できます。

    返事
    0
  • 阿神

    阿神2017-05-16 13:38:50

    jquery がサポートしていないのではなく、クロスドメイン ヘッダーが許可されていない場合、ブラウザーが応答をインターセプトし、エラーが発生することに注意してください。 jquery がこのエラーを受け取ると、クロスドメイン エラーが報告されます。
    パケットを取得して確認することができます (パケットをキャプチャするためにブラウザの f12 を使用しないように注意してください)。実際には、サーバーからの応答がそこにあります。

    返事
    0
  • キャンセル返事