|
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% корректный.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |