javascript - jquery の $.post() がドメイン間でデータを送信できないのはなぜですか?
習慣沉默
習慣沉默 2017-05-16 13:36:50
0
3
633

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

習慣沉默
習慣沉默

全員に返信(3)
世界只因有你

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

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

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

いいねを押す +0
仅有的幸福

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

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

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

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

いいねを押す +0
阿神

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート