以下のコードは私のウェブサイトにあります:
function validateRequest() {
var $form = $('form');
if ($form.valid()) {
$.support.cors = true;
var lnkey = $('#txtloan').val();
var psw = $('#txtpsw').val();
var loanServiceUrl = @Html.Raw(Json.Encode(ConfigurationManager.AppSettings["LoanServiceURL"]));
var msg = {"loan": lnkey, "psw": psw};
$.ajax({
cache: false,
async: true,
type: "POST",
url: loanServiceUrl + "ValidateRequest",
data: JSON.stringify(msg),
contentType: "application/json; charset=utf-8",
dataType: "json", //jsonp?
success: function (response) {
$(response).each(function(i, item) {
if (item.Validated.toString().toUpperCase() == 'TRUE') {
// When validation passed
$('#divResult').load('@Url.Action("GetLoanInfo", "Validate")');
$("#btnClearStatus").show();
$('#btnGetStatus').hide();
}
});
},
error: function (errormsg) {
alert("ERROR! \n" + JSON.stringify(errormsg));
}
});
}
}
サービスが展開されている IIS で次の設定を行いました。
Web サイトから POST 呼び出しを行うと、フィドラーで 2 つの呼び出し (おそらく 1 つは CORS の飛行前呼び出し) が表示されます。これは chrome と Safari では正常に機能しますが、Firefox では機能しません。HTTP 405 エラーが発生します。Firefox 21.0 を使用しています。
以下は、Firefox からサービスが呼び出されたときのフィドラーからのスナップショットです。