在AJAX调用中,我将文本框值作为对象发送到ASP.NET页面方法,如下面的示例所示。我面临的问题是,当任何文本框值包含space
时,我会收到错误消息:
不良请求
您的浏览器发送了此服务器无法理解的请求。客户端发送格式错误的主机标头
虽然我使用data: JSON.stringify(obj)
但请求几乎失败了90%。但是,当所有文本框值都没有space
时,请求每次都会完成。试图解决但无法解决问题。
var obj = {};
obj.CapCode = $.trim($('#CapTextBox').val());
obj.Registered_Name = $.trim($('#Registered_NameTextBox').val()).replace(/\s\s+/g, ' ');
obj.eMail = $.trim($('#e_MailTextBox').val());
$.ajax({
type: "POST",
url: 'Register.aspx/SaveRecord',
data: JSON.stringify(obj),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (resultData) {
try {
$("#User_modal").modal();
}
catch (err) {
alert('ERROR:\n An error occurred while getting records. Try again.');
}
},
error: function (x, e, m) {
errorHandler(x, e, m, $("#btnSave"), false);
},
});
以上代码在开发系统上没有任何问题,但在生产时会出现此错误
答案 0 :(得分:0)
我认为这可能是问题的解决方案,但我无法测试它bcs我在服务器上没有足够的权限;)http://tools.cherrypy.org/wiki/ModRewrite#Bewaretheencodingbug
通过HTTP请求的URL必须在发送之前进行转义(%xx编码),但Apache2的mod_rewrite unescapes路径信息可能会生成无效的HTTP请求。特别是,空格(应该被转义为“%20”)不是。
# this cannot be on .htaccess (only on httpd.conf) RewriteMap escape int:escape #and when writing RewriteRule: RewriteRule ^(.*)$ http://localhost:6674/${escape:$1} [proxy] #(i.e., use ${escape:$1} instead of $1)