php プログラムは IIS7 にデプロイされます。ajax 経由でデータを送信すると、2 つの問題が発生します。1 つは、php プログラムが常に 2 回実行されることです。
最初の問題に対する解決策は、次のコード行を追加するだけです。
header('Access-Control-Allow-Origin:*');header("Access-Control-Allow-Headers: x-requested-with,content-type");
header('アクセス制御の許可メソッド: OPTIONS,POST,GET');
実際には、コードを追加せずに IIS で直接設定することもできます。サイトを直接選択し、右側の http 応答ヘッダーをクリックして、その中で直接設定するだけです。写真に示すように:
2番目の質問については、Baiduからの結果がなかったので、FQしてGoogleを使用する必要がありました。すぐに理解でき、手がかりをたどって、最終的に理解できました。
CORS .net クロスドメイン ソリューションでは、次のように紹介されています (http://jingyan.baidu.com/article/03b2f78c190ad25ea237ae33.html)
同じリクエストには、同じリクエスト アドレスを持つ 2 つのメソッドが必要です。1 つは「POST」とマークされ、もう 1 つは「OPTIONS」とマークされたメソッドです。ここでの「OPTIONS」メソッドは論理的な処理を行う必要はありません。オペレーションと戻り値は void です (実際、OPTIONS リクエストはブラウザの検証です。パラメータ付きの POST リクエストを送信する場合、ブラウザはまず OPTIONS リクエストを送信し、リクエスト ヘッダー情報とレスポンス ヘッダー情報が正しく設定されていることを確認します)実際に POST リクエストを開始する前に一貫性を保つ必要があります)
パケット キャプチャにより、ブラウザが OPTIONS service/service.php HTTP/1.1 と POST /service/service.php HTTP/1.1 の 2 つのリクエストを生成したことがわかりました。
記事にあるようにOPTIONSリクエスト時に直接voidを返したかったのですが、PHPの設定を見ると直接アクションを制限することができます。試してみたところ、ajax はクロスドメインになり、php プログラムは 1 回だけ実行されました。
IIS での設定方法は次のとおりです。PHP プログラム サイトを見つけて、サーバー設定を選択することもできます。右側のハンドラー マッピングをクリックして PHP を見つけ、[編集] をクリックし、ポップアップ ダイアログ ボックスで [要求制限] をクリックして、述語を選択し、以下の述語のいずれかをクリックし、プロンプトに従って GET と POST を入力します。以前はデフォルトのオプション (すべての述語) を使用していたので、この問題が発生しました。 写真に示すように: