У меня есть веб-сайт ASP .NET MVC 4, размещенный на IIS 10.0. Методы действия в контроллерах проверяют входные данные, и, если входные данные неверны, метод действия возвращает код состояния неверного запроса (400) вместе с сообщением об ошибке. Код для этого, как показано ниже
public ActionResult SaveCustomer(Customer customer){
var message = string.Empty
var isValid = ValidateCustomer(customer, ref message);
if (!isValid)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest,message);
}
//Remaining code to save customer
}
Код на стороне клиента использует запросы JQuery AJAX и выглядит следующим образом
var customer = {};
// Code to fill the customer object
$.post('/customer/savecustomer', customer, function (data) {
alert('Customer saved');
}).error(function (response) {
alert(response.statusText);
});
response.statusText отображает сообщение об ошибке, заданное в методе действия, если сайт использует http. Однако, как только сайт настроен с https, response.statusText возвращает только «ошибку».
Я попытался использовать решение, упомянутое здесь, но оно не работает.
ASP.NET MVC 5 ajax error statusText всегда "error"
Когда я открываю вкладку «Сеть» в Chrome Developer Tools, это то, что я нахожу:
С включенным HTTP
Вкладка Заголовки
URL запроса: http://example.com/Customer/SaveCustomer
Способ запроса: POST
Код состояния: 400 Сообщение об ошибке, отправленное с сервера
Удаленный адрес: xxxx.xxxx.xxxx.xxxx: 80
Политика реферера: no -rerrer-when-downgrade
Вкладка ответа
Неверный запрос
С включенным HTTPS
Вкладка Заголовки
URL запроса: https://example.com/Customer/SaveCustomer
Способ запроса: POST
Код статуса: 400
Удаленный адрес: xxxx.xxxx.xxxx.xxxx: 443
Политика реферера: no -rerrer-when-downgrade
Вкладка ответа
Неверный запрос
Разница между http и https заключается в том, что сообщение об ошибке возвращается с кодом состояния с http и только с кодом статуса, возвращаемым с https.
Есть идеи?