2016-06-19 2 views
0

В вызове AJAX я отправляю значения текстового поля как объект в метод страницы ASP.NET, как в примере ниже. Проблема я столкнулся в том, что, когда любое из значений TextBox содержит space я получаю ошибку:Клиент отправил неверный заголовок Host в вызове AJAX

Bad Request
Your browser sent a request that this server could not understand.

Client sent malformed Host header

Хотя я использую 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

Вы оценили это один из? – dmeu

+0

Нет, я проверил почти все, интерфейсные, back-end, серверные журналы, загрузку страницы и т. Д., Но без решения. Я сомневаюсь, что это может быть вызвано некоторым плагином jquery/bootstrap, используемым в шаблоне. Просто для теста я удалил все шаблоны css, js-файлы и ajax и попытался сохранить запись на сервере, которая была успешной. – haraman

+0

Я закончил замену '+' пробелом и наоборот на стороне сервера – dmeu

ответ

0

Я думаю, что это может быть решением проблемы, но я не могу проверить это BCS у меня нет достаточно прав на сервер;) http://tools.cherrypy.org/wiki/ModRewrite#Bewaretheencodingbug

URL's that are requested via HTTP must be escaped (%xx-encoded) before they are sent, but Apache2's mod_rewrite unescapes path information which may generate invalid HTTP requests. In particular, spaces (which should be escaped as "%20") are not.

# 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) 

 Смежные вопросы

  • Нет связанных вопросов^_^