|   |   | 
| 
 | JS почему не формируется заголовок POST | ☑ | ||
|---|---|---|---|---|
| 0
    
        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 | 
        ТС, куда пропал?     | |||
| 5
    
        vde69 16.04.21✎ 21:18 | 
        работа затянула :) разобрался, вот так правильно
 '<'+el.name+'='+el.value+';'+localStorage.getItem('crc')+'>\r\n'; | |||
| 6
    
        Джошуа Бродвел 16.04.21✎ 22:34 | 
        (5) Это ни на что не должно было повлиять. Только в боди добавятся два символа, в остальном работает так же.     | |||
| 7
    
        vde69 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 там никакого нет     | |||
| 12
    
        vde69 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% корректный.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |