客户端在AJAX调用中发送了格式错误的主机头

时间:2016-06-19 16:05:27

标签: jquery asp.net ajax http-headers bad-request

在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);
    },
});

以上代码在开发系统上没有任何问题,但在生产时会出现此错误

1 个答案:

答案 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)