Я проверил это и что. Однако, мой отладчик выглядит, как показано ниже.
Нет данных форма, ни содержание сырого
Сырой пример (* хотя путь отличается от захвата экрана, обе они не умеют читать пост данных)
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)
Различия между ними я заметил (путем дифференцирования содержание заголовка)
Сырой пример (* хотя путь отличается от захвата экрана, обе они не умеют читать пост данных)
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": "\u0022success\u0022", "exitStatus": true }
0
Примечание: (6)
Успешно используется в jQuery привязки во время сбоя с помощью HTTPS с nodejs + browserify. Однако, я до сих пор найти способ проверить, действительно ли это проблема или нет (не проверял)
Отсутствует Значок X-Просил-С Помощью XMLHttpRequest
. Однако, добавив этот заголовок в запросе не исправить эту проблему (проверено)
Капитал заголовка против строчная буква заголовка поля (
контент-типи
тип содержимого`. Однако эта разница не является первопричиной для моей проблемы, как пытался в [скрипку здесь][6] (проверено)
"Принять" против "принять" (не проверял)
Примечание: (5) (7)
Еще, я не знаю, почему первый C
В тип содержимого
с маленькой буквы.
Примечание: (1)
Я пробовал в Firefox с Firebug. Он способен показать мой груз. Однако, он не может разобрать ответ от сервера :'(
<ы>так как веб-сервер работает по протоколу HTTPS, я не могу перехватывать пакеты с помощью Wireshark. Любое предложение для отладки POST-запросы? Спасибо.</с>
Ссылка на [суть][Суть] о отладки http(ы) запрос через командную строку. Примечание: (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,
};
};
[Полный источник здесь][http_request_src]
Примечание: (2)
Обновление #
C
. Я еще могу проверить данные формы в отладчике.Регресс баг в Chrome В61 и габариты компонента соответствуют v62 на всех платформах, что вызвало такое поведение, когда ответ (среди других) 302. Это фиксируется в в63 стабильный, который был выпущен для всех настольных платформ 6-го декабря 2017 года.
Автоматические обновления поэтапно, но чтобы "помочь" и / "около Гугл Хром" получат заставить его скачать обновление и дадим вам кнопку, чтобы перезагрузить. Иногда надо "убить" все процессы Chrome и перезапустить его вручную, чтобы получить обновление.
(Теперь закрыт) отчет об ошибках здесь. Анонс выпуска здесь.
Очевидно, что это не является причиной оригинального плаката'ы проблема еще в 2015 году, но поиски проблемы привели меня сюда. Также обратите внимание, что это не только проблема ОС Х.
Если приложение возвращает код статуса 302, и никаких полезных данных в Chrome инструменты разработчика, вы можете быть столкновения с этой ошибкой хром.
Если вы находитесь в развитии или это URL-адрес, который выиграл'т сломать что-нибудь, быстрый, практичный, временное решение, чтобы изменить свой код на стороне сервера для отправки 200, например в PHP вы могли бы добавить:
умереть("и преждевременный выход - отправить 200 и");
который отправляет код состояния 200. Это работает вокруг в "302 ошибка" и -- пока она не будет устранена.
С. С. В @Лео-Хендри ниже, Канарские имеет исправления по состоянию на декабрь 2017 года, но если вы Don'Т есть еще одна причина для запуска Канарейка, запустив другой браузер бок-о-бок выиграл'т стоит, как магистральные релиз должен выйти в ближайшее время.
Если это баг, он может вести себя по-разному на Mac против Windows.
Скриншот ниже-это от хром 63 в Windows. Вы можете посмотреть в разделе Полезная нагрузка просить, как ожидалось.
Вот что я вижу в Chrome 65 бета, работающих на Mac. Обратите внимание на раздел полезных запросу отсутствует.
Я предпологаю, что ошибка не исправлена или что-то еще я должен проверить?
Я, вероятно, получил такую же проблему с консоли хрома (хром 69)
Ни в виде FormData, ни вкладку нагрузка показывает. В моем случае я отправляю форму с enctype "и multipart/данные формы", чтобы в iframe (представления графического файла по протоколу HTTPS к тому же происхождения). Он работает, как ожидалось, но я не'т знаю, как для отладки данных в Chrome должным образом, когда она не'т показать вверх на всех. Я может сброса данных в PHP, но это'с ненужным сложное и абсолютно отсутствующие точки с помощью консоли. Я'вэ прочитайте предложенные выше решения, но я не'т управления, чтобы избавиться от этой проблемы. (Код ответа 200 кстати, а не 302).
$_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
)
)
Ваш код выглядит нормально. Вы проверили консоль Хром для ошибок?
Если у вас есть доступ к серверу (и при условии, что это успешно
на 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