Bad Request error returns "error" 而不是在 IIS 中启用 https 时的错误消息
Bad Request error returns "error" instead of the error message when https is enabled in IIS
我有一个 ASP .NET MVC 4 网站托管在 IIS 10.0 上。控制器中的操作方法验证输入,如果输入不正确,操作方法 returns 错误请求状态代码 (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);
});
只要站点使用 http,response.statusText 就会显示操作方法中设置的错误消息。但是,一旦站点配置了 https,response.statusText returns 就只是“错误”。
我尝试使用此处提到的解决方案,但它不起作用。
ASP.NET MVC 5 ajax error statusText is always "error"
当我在 Chrome 开发人员工具中打开网络选项卡时,我发现了以下内容:
启用 HTTP
Headers 选项卡
请求URL:http://example.com/Customer/SaveCustomer
请求方式:POST
状态代码:400 服务器发送错误消息
远程地址:xxxx.xxxx.xxxx.xxxx:80
推荐人政策:no-referrer-when-downgrade
响应选项卡
请求错误
启用 HTTPS
Headers 选项卡
请求URL:https://example.com/Customer/SaveCustomer
请求方式:POST
状态码:400
远程地址:xxxx.xxxx.xxxx.xxxx:443
推荐人政策:no-referrer-when-downgrade
响应选项卡
请求错误
http和https的区别在于http返回错误信息和状态码,而https只返回状态码。
有什么想法吗?
原来它与 HTTP 2.0 有关。我关闭了 HTTP 2.0 并切换到 HTTP 1.1。现在错误消息按预期显示。我不知道为什么 HTTP 2.0 会导致这种行为。
我有一个 ASP .NET MVC 4 网站托管在 IIS 10.0 上。控制器中的操作方法验证输入,如果输入不正确,操作方法 returns 错误请求状态代码 (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);
});
只要站点使用 http,response.statusText 就会显示操作方法中设置的错误消息。但是,一旦站点配置了 https,response.statusText returns 就只是“错误”。 我尝试使用此处提到的解决方案,但它不起作用。 ASP.NET MVC 5 ajax error statusText is always "error"
当我在 Chrome 开发人员工具中打开网络选项卡时,我发现了以下内容:
启用 HTTP
Headers 选项卡
请求URL:http://example.com/Customer/SaveCustomer
请求方式:POST
状态代码:400 服务器发送错误消息
远程地址:xxxx.xxxx.xxxx.xxxx:80
推荐人政策:no-referrer-when-downgrade
响应选项卡
请求错误
启用 HTTPS
Headers 选项卡
请求URL:https://example.com/Customer/SaveCustomer
请求方式:POST
状态码:400
远程地址:xxxx.xxxx.xxxx.xxxx:443
推荐人政策:no-referrer-when-downgrade
响应选项卡
请求错误
http和https的区别在于http返回错误信息和状态码,而https只返回状态码。
有什么想法吗?
原来它与 HTTP 2.0 有关。我关闭了 HTTP 2.0 并切换到 HTTP 1.1。现在错误消息按预期显示。我不知道为什么 HTTP 2.0 会导致这种行为。