私はASP.NET MVC 5プロジェクトを持っていて、ページの1つにASP.NET WebApiプロジェクトを実行しているサーバー上でAPIを呼び出すJavaScriptがあります。 2つのプロジェクトは通常異なるドメインで動作しますが、ローカルではlocalhost
の異なるポートにあるだけです。このJavaScriptはGET
リクエストを作成していますが、ネットワークログを見ると代わりにOPTIONS
リクエストが行われており、WebApiは405 Method Not Authorized
を返します。ASP.NET MVCサイトのこのAJAXリクエストがプリフライトチェックをトリガーしているのはなぜですか?
私の研究から、私はそのthis is a "preflight" check that is sometimes triggered for AJAX callsを知っている、と私はそのASP.NET WebApi doesn't support OPTIONS
by defaultを知って、私はthe preflight check is supposed to be skipped when certain conditions are met、しかし、405を取得していて、これらの条件は、ここで満たされている理由ですので。自分で見て;以下は、AJAX要求のJSコードの(匿名)全体である:
var xmlhttp = new XMLHttpRequest();
var url = "http://localhost:12345/api/SomeAction?someArg=" + someArg;
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
// [snip], process the result here
}
};
xmlhttp.open("GET", url, true);
xmlhttp.send();
なぜプリフライトチェックをトリガーこの単純な要求がありますか?
また、これをAI javascript sdk https://github.com/Microsoft/ApplicationInsights-JS/issuesに掲載してください。 AIの存在がブラウザによってCORSチェックを強制する理由はわかりません。 –
@JohnGardner:必ずしもバグではないと思ったので、私はそこに問題を投稿していませんでした。ただ残念な副作用です。 AIが追加したカスタムヘッダーは、プリフライトチェックを強制するものだと私は信じています(GitHubのファイルを参照してください)。あなたが実際にバグだと思ったら教えてください。私は問題を開くことができます。 –