Вход | Регистрация
 

JS почему не формируется заголовок POST

JS почему не формируется заголовок POST
Я
   vde69
 
15.04.21 - 23:07
отрабатывает:

function send_set(el_op) {    
    var request = new XMLHttpRequest();
    request.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            var vdat = JSON.parse(this.responseText);
            if (vdat !== null && typeof vdat == 'ok') { close_set(el_op); }}}
    el = document.getElementById('forms_edit_i');
    request.open('POST', 'ajax_set_data', true);
    request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    request.send('<'+el.name+'='+el.value+';'+localStorage.getItem('crc')+'>');    
}

но в отправляемых данных нет "Request Method: POST", вот что отправляется

Request URL: http://192.168.10.101/ajax_set_data
Referrer Policy: strict-origin-when-cross-origin
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
Connection: keep-alive
Content-Length: 25
Content-Type: application/x-www-form-urlencoded
DNT: 1
Host: 192.168.10.101
Origin: http://192.168.10.101
Referer: http://192.168.10.101/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36

<t_time_start: 12:33;null>
   Плюс Ультра
 
1 - 15.04.21 - 23:20
(0) Проверил щас твою функцию, все нормально там отправляется, POST присутствует
   Плюс Ультра
 
2 - 15.04.21 - 23:23
XMLHttpRequest лучше не используй, это прошлый век. Делай так:


fetch("ajax_set_data", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "body": '<'+el.name+'='+el.value+';'+localStorage.getItem('crc')+'>',
  "method": "POST",
});
   Джошуа Бродвел
 
4 - 16.04.21 - 16:59
ТС, куда пропал?
   vde69
 
5 - 16.04.21 - 21:18
работа затянула :) разобрался, вот так правильно

'<'+el.name+'='+el.value+';'+localStorage.getItem('crc')+'>\r\n';
   Джошуа Бродвел
 
6 - 16.04.21 - 22:34
(5) Это ни на что не должно было повлиять. Только в боди добавятся два символа, в остальном работает так же.
   vde69
 
7 - 16.04.21 - 22:50
(6) это влияет на определение конца данных post, например Content-Length - не обязательный, без него по спеке данные должны завершатся пустой строкой.

В моем случае ошибка была в том, что я на сервере не получал сами данные POST запроса и поэтому статус ответа был не равен 200
   Джошуа Бродвел
 
8 - 17.04.21 - 00:08
(7) Значит у тебя либо сервер неправильно парсит запрос, либо клиент неправильно отправляет. Потому что XMLHttpRequest сам добавляет нужное количество разделителей куда надо. Ты же их добавил прямо в тело запроса, значит эти разделители должны приняться сервером тоже в теле запроса, а это не то что ты хотел.
   Вафель
 
9 - 17.04.21 - 11:02
В таком формате те должно быть
Имя1=значение1&имя1=значение2&...
   Вафель
 
10 - 17.04.21 - 11:02
Значение нужно кодировать как урл
   Вафель
 
11 - 17.04.21 - 11:03
Xml там никакого нет
   vde69
 
12 - 17.04.21 - 11:56
(10) формат там произвольный единственное ограничение это код символа от 32 до 127
(8) да, у меня сарвер самописный, собственно его и отлаживаю...
   Вафель
 
13 - 17.04.21 - 12:04
Ну тогда и заголовок ставь нормальный
application/xml
   Бакуго
 
14 - 17.04.21 - 23:02
(12) Как я уже писал, значит проблема именно в сервере. \r\n добавлять в тело запроса нет никакой необходимости. Если отправляешь из современного браузера на подобии Гугл Хрома или Микрософт Эдж, то запрос формируется 100% корректный.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.