タイトルのように、jquery でカプセル化された ajax メソッドが get メソッドでデータを送信するために jsonp を使用できるのに、ドメイン間でデータを送信するために post メソッドを直接使用できるのはなぜですか? 根本的な原因は何ですか?
世界只因有你2017-05-16 13:38:50
jquery 独自の関数はサポートされていませんが、jquery に基づいてクロスドメイン投稿を実装できます。
jquery 自体は jsonp クロスドメインのみをサポートしますが、jsonp の原則により get のみのサポートに制限されます。
ネイティブ jquery クロスドメインを実装する場合は、リクエスト アドレスの先頭に Access-Control-Allow-Origin を追加し、値を API を呼び出すドメイン名 (または *) に設定します
仅有的幸福2017-05-16 13:38:50
クロスドメインは一般に 2 つのタイプに分類されます:
jsonp クロスドメイン。 jsonp はもともと get file メソッドを使用してクロスドメイン チェックをバイパスするため、post をサポートしていません。 get を使用してポストリクエストをシミュレートするサードパーティライブラリもあります。
COR クロスドメイン。 COR クロスドメインでは、サーバー側の Access-Control-Allow-Origin 応答を変更する必要があります。 通常、クライアントは 2 つの post リクエストを送信します。1 回目はオプションのタイプで、サーバーが許可を返した後、2 回目はデータを含む実際のリクエストを送信します。
回答者の条件が許せば、投稿を直接サポートできる 2 番目のクロスドメイン方法を使用してみてください。
サーバー構成を変更できない場合、回答者はサードパーティのライブラリを探して、jsonp を使用して投稿リクエストをシミュレートできるかどうかを確認できます。
阿神2017-05-16 13:38:50
jquery がサポートしていないのではなく、クロスドメイン ヘッダーが許可されていない場合、ブラウザーが応答をインターセプトし、エラーが発生することに注意してください。 jquery がこのエラーを受け取ると、クロスドメイン エラーが報告されます。
パケットを取得して確認することができます (パケットをキャプチャするためにブラウザの f12 を使用しないように注意してください)。実際には、サーバーからの応答がそこにあります。