Полезная нагрузка HTTP POST не отображается в отладчике Chrome?



Я проверил этой и что. Однако мой отладчик выглядит следующим образом.



пример отказ



No form data, No raw content.



нет данных формы, нет необработанного содержимого



пример Raw (*хотя путь отличается от захвата экрана, оба они не могут читать данные post)



POST https://192.168.0.7/cgi-bin/icul/;stok=554652ca111799826a1fbdafba9d3ac1/remote_command HTTP/1.1
Host: 192.168.0.7
Connection: keep-alive
Content-Length: 419
accept: application/json, text/javascript, */*; q=0.01
Origin: https://192.168.0.7
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
content-type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://192.168.0.7/cgi-bin/icul/;stok=554652ca111799826a1fbdafba9d3ac1/smartmomentl/access-point/network
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,zh-TW;q=0.6,zh;q=0.4
Cookie: sysauth=f15eff5e9ebb8f152e163f8bc00505c6

command=import&args=%7B%22--json%22%3Atrue%2C%22--force%22%3Atrue%2C%22--mocks%22%3A%22%7B%5C%22DEL%5C%22%3A%7B%7D%2C%5C%22SET%5C%22%3A%7B%5C%22dhcp%5C%22%3A%7B%5C%22lan%5C%22%3A%7B%5C%22.section%5C%22%3A%5C%22dhcp%5C%22%2C%5C%22interface%5C%22%3A%5C%22lan%5C%22%2C%5C%22ignore%5C%22%3A%5C%220%5C%22%2C%5C%22leasetime%5C%22%3A%5C%2212h%5C%22%2C%5C%22range%5C%22%3A%5C%22172.16.0.100-172.16.0.200%5C%22%7D%7D%7D%7D%22%7D

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Status: 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: 0
Transfer-Encoding: chunked
Date: Thu, 01 Jan 1970 00:09:27 GMT
Server: lighttpd/1.4.30

31
{ "ctx": "No such command", "exitStatus": false }
0


Примечание: (6)



удачный пример



Some of them are able to work



различия между ними I заметили (путем дифференциации содержимого заголовка)



пример Raw (*хотя путь отличается от захвата экрана, оба они не могут читать данные post)



POST https://192.168.0.7/cgi-bin/icul/;stok=92dea2b939b9fceb44ac84ac859de7f4/;stok=92dea2b939b9fceb44ac84ac859de7f4/remote_command HTTP/1.1
Host: 192.168.0.7
Connection: keep-alive
Content-Length: 53
Accept: application/json, text/javascript, */*; q=0.01
Origin: https://192.168.0.7
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: https://192.168.0.7/cgi-bin/icul/;stok=92dea2b939b9fceb44ac84ac859de7f4/remote_command/command_reboot
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,zh-TW;q=0.6,zh;q=0.4
Cookie: sysauth=683308794904e0bedaaead33acb15c7e

command=command_reboot&args=%7B%22--json%22%3Atrue%7D

HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Status: 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: 0
Transfer-Encoding: chunked
Date: Thu, 01 Jan 1970 00:02:46 GMT
Server: lighttpd/1.4.30

34
{ "ctx": "u0022successu0022", "exitStatus": true }
0


Примечание: (6)



разница в заголовке между 2 примерами




  • успешно используется привязка Jquery в то время как отказ один с помощью HTTPS от nodejs + browserify. Тем не менее, я все еще нахожу способ проверить, есть ли это проблема или нет (не проверял)


  • отсутствует X-Requested-With: XMLHttpRequest. Однако добавление этого заголовка обратно в запрос не устраняет эту проблему (проверено)



  • заглавный заголовок против меньшего поля заголовка письма (




    • content-type и Content-type. Однако эта разница не является основной причиной моей проблемы, как пытались в скрипку здесь (проверено)


    • Accept vs accept (Не проверено)





Примечание: (5) (7)



все же, я не уверен, почему первый c на content-type С маленькой буквы.



Примечание: (1)



что я пробовал



Я пробовал Firefox с firebug. Он способен показать мою полезную нагрузку. Однако он не может проанализировать ответ от сервера :' (



так как веб-сервер работает в протоколе HTTPS, я не могу захватить пакеты с помощью приложение Wireshark. Любые предложения по отладке почтовых запросов? Спасибо.



ссылке суть об отладке HTTP (S) запроса через командную строку. Примечание: (3)



обертка я использую



у меня есть обруч этот метод от nodejs с обещанием звонки. Ниже приведен фрагмент показать вариант, который я использовал.



/**
* Wraps HTTPS module from nodejs with Promise
* @module common/http_request
*/

var createRequestSetting = function (host, path, data, cookies) {
return {
method: 'POST',
port:443,
host: host,
path: path,
headers: {
Accept: 'application/json, text/javascript, */*; q=0.01',
'Content-Type':
'application/x-www-form-urlencoded; charset=UTF-8',
'Content-Length': Buffer.byteLength(data),
'Cookie': cookies,
},
rejectUnauthorized: false,
};
};


полный источник здесь



Примечание.: (2)



обновление




  • (1) я проверил письмо c не влияет на отладчик chrome. Вот это скрипка. Я попытался имитировать тот же запрос с XMLHttpRequest письмо c. Я все еще могу проверить данные формы в отладчике.

  • (2) Ссылка на полный исходный код

  • (3) связаться с суть от меня о скриптах для тестирования HTTP (S) запроса

  • (4) переформатировать вопрос читаемость

  • (5) примеры не используют одну и ту же привязку после просмотра кода

  • (6) Добавить пример заголовка сырья

  • (7) Добавить сеанс сравнения

961   7  

7 ответов:

в Chrome v61 и v62 была ошибка регрессии на всех платформах, которая вызвала это поведение, когда ответ (среди прочих) 302. Это исправлено в v63 stable, который был выпущен для всех настольных платформ 6 декабря 2017 года.

автоматические обновления поэтапны, но переход на "помощь" / "о Google Chrome" заставит его загрузить обновление и дать вам кнопку для перезагрузки. Иногда необходимо убить весь процесс Chrome и перезапустить его вручную, чтобы получить обновление.

отчет об ошибке (теперь закрыт)здесь. Объявление о выпуске здесь.

очевидно, что это не причина проблемы оригинального плаката еще в 2015 году, но поиски проблемы привели меня сюда. Также обратите внимание, что это не просто проблема OS X.

Если ваше приложение возвращает код состояния 302, и нет данных полезной нагрузки в Chrome Devtools, вы можете быть попав в этот хром ошибка.

Если вы находитесь в разработке или это URL-адрес, который ничего не сломает, быстрый, очень практичный обходной путь заключается в изменении кода на стороне сервера для отправки 200, например, в PHP вы можете добавить:

die("premature exit - send a 200");

который отправляет код состояния 200. Это работает вокруг "302 ошибка" -- пока это не так зафиксированный.

p. s.Per @leo-hendry ниже, Canary действительно имеет исправление по состоянию на декабрь 2017 года, но если у вас нет другой причины запускать Canary, запуск другого браузера бок о бок не будет стоить того, так как скоро должен выйти релиз mainline.

Я только что заметил, что вы не можете видеть данные POST, если вы выберете "Doc" из фильтров в отладчике Chrome (рядом со всеми, Xhr, Css, JS...). Он показывает, если вы выберете "все".

Если это ошибка, она может вести себя по-разному на Mac против Windows.

скриншот ниже от Chrome 63 на Windows. Вы можете увидеть раздел полезных данных запроса, как и ожидалось.

Good Example

вот что я вижу на Chrome 65 Beta работает на Mac. Обратите внимание, что раздел полезных данных запроса отсутствует.

Bad example

правильно ли я предполагаю, что ошибка не исправлена или есть что-то еще я надо проверить?

ваш код выглядит нормально. Вы проверили консоль Chrome на наличие ошибок? Если у вас есть доступ к серверу (и предполагая, что это httpd в Linux) вы можете сделать небольшой скрипт оболочки CGI для проверки заголовков И данных на этом конце:

#!/bin/bash

echo "Content-type: text/plain"
echo ""    
echo "Hello World. These are my environment variables:"
/usr/bin/env
if [ "$REQUEST_METHOD" = "POST" ]; then
    if [ "$CONTENT_LENGTH" -gt 0 ]; then
        echo "And this is my POST data:"
        /bin/cat
    fi
fi
exit 0

хотя это не ответ на исходный вопрос, Моя альтернатива-заменить исходную реализацию комбинацией форма-Сведения, es6-promise и isomorphic-fetch

все пакеты могут быть загружены из npm.

Он работает очаровательно.

Я, вероятно, получил ту же проблему с консолью Chrome (Chrome 69)

ни formdata, ни вкладка полезной нагрузки не отображаются. В моем сценарии я отправляю форму с enctype "multipart / form-data" в iframe (отправка файла изображения по https в тот же источник). Он работает так, как ожидалось, но я не знаю, как правильно отлаживать данные в chrome, когда он вообще не отображается. Я может дамп данных в PHP, но это ненужно сложно и полностью отсутствует точка использования консоли. Я прочитал предложенные выше решения, но мне не удалось избавиться от этой проблемы. (Код ответа-200 btw, а не 302).

Formdata and payload missing

$_POST = Array
(
    [xajax] => 1
    [app] => products
    [cmd] => upload
    [cat] => 575
)

$_FILES = Array
(
    [upfile] => Array
    (
        [name] => Aufkleber_Trollface.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpHwYkKD
        [error] => 0
        [size] => 25692
    )
)

Comments

    Ничего не найдено.