画像付きのフォームを AJAX 経由で WebAPI2 コントローラーに POST するページを開発しました。
これを繰り返します。ユーザーに一連の画像を選択させ、選択ボックスに追加すると、ユーザーは別の場所からさらに追加したり、リストからアイテムを削除したりできます。そこで、画像を記入したフォームをサーバーに送信します。各画像のアップロードの進行状況を表示できるように、画像ごとに具体的に 1 回行います。画像がサーバー上にあると、サーバー側のコードによって安全なリポジトリに移動されます。アプリケーション プールは、特定の AD アカウントを使用して作業を行っています。
これは私にとってはうまく機能し、それをテストした他の人にとってはうまく機能しますが、IEで断続的なエラーが発生するテスターが8人中1人います。彼は別のブラウザーでそれを試しません (私たちには実際のテスターはいません。ユーザーだけで、これは頑固です)。
同じプロジェクトの一部である私のサーバー側の Web API コードは、ヒットさえしていません。メソッドをすぐに入力したことを記録します。さらに、サーバー側のアプリケーション ログにエラーが記録されることはありません。AJAX が「エラー」と「0」を返しています。応答テキストはありません。私はすべてのAJAXエラーをサーバーアドレスに記録しています(ところで、問題なく送信されます)
最初は Web API ではなく MVC コントローラーを使用してこれを作成しましたが、問題が解決することを期待して切り替えました。それはしませんでした。
フォームを「送信」するボタンは送信ボタンではありません。input="ボタン" です。フォームに送信ボタンがありません。フォームには投稿先のアドレスがありません。アイテムがアップロードされている間は、フォーム全体をロックして、ボタンをクリックしたり、要素を編集したりできないようにします。結論として、私はその e.preventDefault(); を見ることができません。役に立ちます。
これは実際にはクロスサイト スクリプティングではありません。また、クロスサイト スクリプティング ポリシーがランダムにトリップする可能性があることを示唆するものをオンラインで見つけることはできませんが、そのように思われます。
時々、彼はフォームを送信し、画像のアップロードの 1/3 と残りのエラーを送信します。画像の種類、サイズ、またはそのいずれでもありません-彼がアップロードしていた画像をコピーし、それらを使用して検証しました。
サーバー側でクロスサイト スクリプティングを無効にし、JSONP フォーマッタを追加したところ、エラーなしでテストされました。彼は以前にそれを機能させ、その後問題が再発したため、実際に問題が解決したかどうかを確認するためにテストを続けます.
本当にクロスサイト スクリプティングが原因である場合、その理由は何ですか? 私のajaxリクエストでトップレベルドメインを指定していないため、IISサーバーに別のトップレベルドメインを選択させる何かがあるのでしょうか?
$.ajax({
url: getBaseURL() + 'API/FileForm',
type: 'POST',
data: dataString,
cache: false,
contentType: false,
processData: false
})
getBaseURL() が言う場所:
function getBaseURL() {
var baseURL = $("#HiddenCurrentURL").val().trim();
if (baseURL != "/") {
baseURL += "/";
}
return baseURL;
}
HiddenCurrentURL が私の _layout にある場合:
@Html.Hidden("HiddenCurrentURL", Request.ApplicationPath)
どんな助けでも大歓迎です。私は今何をすべきかよくわかりません。ブラウザの設定でこれを行うことはできますか?
編集: 彼は IE 11 を使用しています - 私と他のテスターもそうです。私は、Chrome と Firefox でもテストを行いました。
Edit2: クロスサイト スクリプティングを無効にしましたが、問題は続きました。この問題は、勤務時間外の深夜または早朝にのみ発生するようです。IISグループに確認したところ、「常にオン」で実行されているとのことでしたが...